Elasticsearch 入门教学:从零开始掌握分布式搜索引擎

引言

Elasticsearch 是一个开源的分布式搜索引擎,基于 Apache Lucene 构建,能够实现近乎实时的数据搜索和分析。它广泛应用于日志分析、全文搜索、数据可视化等场景。本文将带你从零开始学习 Elasticsearch,掌握其基本概念、安装配置、数据操作及搜索功能。

1. Elasticsearch 简介

1.1 什么是 Elasticsearch?

Elasticsearch 是一个分布式的 RESTful 搜索引擎,能够快速地存储、搜索和分析大量数据。它的核心特点包括:

  • 分布式:数据可以分布在多个节点上,支持水平扩展。
  • 实时性:数据几乎可以实时地被索引和搜索。
  • 全文搜索:支持复杂的全文搜索功能。
  • RESTful API:通过 HTTP 接口进行操作,易于集成。

1.2 Elasticsearch 的核心概念

  • 索引(Index):类似于关系数据库中的"数据库",用于存储相关文档。
  • 类型(Type):在 Elasticsearch 7.x 及之前版本中,索引可以包含多个类型,类似于"表"。但在 7.x 之后,类型逐渐被弃用,建议每个索引只包含一个类型。
  • 文档(Document):索引中的基本数据单元,类似于关系数据库中的"行"。
  • 字段(Field):文档中的属性,类似于关系数据库中的"列"。
  • 分片(Shard):索引可以被分成多个分片,分布在不同节点上,以实现分布式存储和搜索。
  • 副本(Replica):每个分片可以有多个副本,用于提高数据的可用性和容错性。

2. 安装与配置

2.1 安装 Elasticsearch

Elasticsearch 可以在多种操作系统上运行,以下以 Linux 为例介绍安装步骤。

  1. 下载 Elasticsearch

    访问 Elasticsearch 官方下载页面,选择适合的版本进行下载。

    bash 复制代码
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz
  2. 解压并安装

    bash 复制代码
    tar -xzf elasticsearch-7.10.1-linux-x86_64.tar.gz
    cd elasticsearch-7.10.1/
  3. 启动 Elasticsearch

    bash 复制代码
    ./bin/elasticsearch

    默认情况下,Elasticsearch 会在 localhost:9200 上启动。

2.2 配置 Elasticsearch

Elasticsearch 的配置文件位于 config/elasticsearch.yml,常见的配置项包括:

  • 集群名称cluster.name
  • 节点名称node.name
  • 网络绑定地址network.host
  • 端口http.port

例如,修改集群名称:

yaml 复制代码
cluster.name: my_cluster

3. 基本操作

3.1 使用 RESTful API 操作 Elasticsearch

Elasticsearch 提供了丰富的 RESTful API,可以通过 HTTP 请求进行操作。以下是一些常用的操作示例。

3.1.1 创建索引
bash 复制代码
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }
}'
3.1.2 插入文档
bash 复制代码
curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{
  "title": "Elasticsearch 入门",
  "content": "这是一篇关于 Elasticsearch 的入门教程。",
  "tags": ["搜索", "教程"]
}'
3.1.3 查询文档
bash 复制代码
curl -X GET "localhost:9200/my_index/_doc/1"
3.1.4 搜索文档
bash 复制代码
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "content": "入门"
    }
  }
}'

3.2 使用 Kibana 进行操作

Kibana 是 Elasticsearch 的可视化工具,提供了更友好的界面来操作 Elasticsearch。你可以通过 Kibana 的 Dev Tools 来执行上述的 RESTful API 操作。

4. 进阶操作

4.1 索引管理

Elasticsearch 提供了丰富的索引管理功能,包括索引的创建、删除、映射定义等。

4.1.1 删除索引
bash 复制代码
curl -X DELETE "localhost:9200/my_index"
4.1.2 定义映射

映射(Mapping)用于定义索引中的字段类型。

bash 复制代码
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "content": { "type": "text" },
      "tags": { "type": "keyword" }
    }
  }
}'

4.2 复杂查询

Elasticsearch 支持多种复杂的查询方式,如布尔查询、范围查询、聚合查询等。

4.2.1 布尔查询
bash 复制代码
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool": {
      "must": [
        { "match": { "content": "入门" }},
        { "match": { "tags": "教程" }}
      ]
    }
  }
}'
4.2.2 聚合查询
bash 复制代码
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "aggs": {
    "popular_tags": {
      "terms": { "field": "tags" }
    }
  }
}'

5. 总结

通过本文,你已经了解了 Elasticsearch 的基本概念、安装配置、数据操作及搜索功能。Elasticsearch 是一个功能强大的搜索引擎,适用于各种数据搜索和分析场景。接下来,你可以进一步学习 Elasticsearch 的高级功能,如集群管理、性能优化等。

希望这篇入门教程对你有所帮助,祝你在 Elasticsearch 的学习和使用中取得更多成果!


参考资源

相关工具


如果你有任何问题或建议,欢迎在评论区留言!

相关推荐
网站优化(SEO)专家12 小时前
SEO核心算法拆解:网站排名快速提升的武林秘籍!
算法·搜索引擎·网站排名·核心算法
hyf32663315 小时前
泛程序哪有想象中难!小白跟着走一遍就全懂
前端·爬虫·搜索引擎·seo·蜘蛛池
网络工程小王17 小时前
【HCIE-AI】12.deepspeed分布式并行训练进阶版
人工智能·pytorch·分布式·学习·昇腾·deepspeed
ACP广源盛1392462567320 小时前
国产算力互联IX8024@ACP#Kimi K3 开源后的端侧部署硬件架构分析
大数据·人工智能·分布式·单片机·嵌入式硬件
花生了什么事o20 小时前
分布式 ID 生成方案:从数据库自增到雪花算法
数据库·分布式·算法
一次旅行21 小时前
【效率秘籍】Shell 函数+别名组合拳,让 80% 的重复命令变 1 个字母
大数据·elasticsearch·搜索引擎
暖和_白开水21 小时前
数据分析agent(九):es_client_manager.py 和分词器ik_max_word问题
elasticsearch·数据分析·c#
码农学院21 小时前
Elasticsearch构建汽车零配件智能搜索与匹配系统
大数据·elasticsearch·汽车
AI探索先锋1 天前
AMD 2nm 芯片炸裂、欧洲首家人形机器人独角兽诞生、AI Agent 互联标准打响:10 条信号看懂产业变局|今日科技 AI 机器人快讯
大数据·人工智能·深度学习·搜索引擎·机器人
爱吃提升1 天前
python 分布式爬虫、爬虫合规与综合实战项目
分布式·爬虫·python