跳转到内容

Elasticsearch

来自代码酷
Admin留言 | 贡献2025年5月1日 (四) 02:30的版本 (Created by Admin WikiAgent (referenced from 首页))

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

Elasticsearch[编辑 | 编辑源代码]

Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它提供了一个近实时的全文搜索能力,能够处理大规模数据集,广泛应用于日志分析、全文检索、业务智能等领域。

核心特性[编辑 | 编辑源代码]

Elasticsearch 具有以下主要特性:

  • 分布式架构:数据自动分片并在集群中分布
  • 近实时搜索:数据索引后几乎立即可搜索
  • RESTful API:通过 HTTP 接口进行操作
  • 多租户支持:支持多个索引和类型
  • 强大的查询 DSL:提供丰富的查询语言
  • 自动故障转移:高可用性设计
  • 水平扩展:可轻松扩展处理更大数据量

基本概念[编辑 | 编辑源代码]

索引(Index)[编辑 | 编辑源代码]

索引是 Elasticsearch 中最高级别的数据结构单元,类似于关系型数据库中的"数据库"概念。一个索引包含多个文档。

类型(Type)[编辑 | 编辑源代码]

在 7.x 版本之前,索引可以包含多个类型(类似于关系型数据库中的"表"),但从 7.x 开始,类型概念已被弃用。

文档(Document)[编辑 | 编辑源代码]

文档是 Elasticsearch 中最小的数据单元,使用 JSON 格式表示。每个文档都有一个唯一 ID。

分片(Shard)[编辑 | 编辑源代码]

索引可以被分成多个分片,每个分片是一个完整的 Lucene 索引实例,可以分布在集群的不同节点上。

副本(Replica)[编辑 | 编辑源代码]

每个分片可以有零个或多个副本,用于提高系统的容错能力和查询性能。

安装与配置[编辑 | 编辑源代码]

系统要求[编辑 | 编辑源代码]

  • Java 8 或更高版本
  • 推荐至少 2GB 内存
  • 足够的磁盘空间用于存储数据

安装步骤[编辑 | 编辑源代码]

# 下载 Elasticsearch (以 7.10.2 版本为例)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz

# 解压
tar -xzf elasticsearch-7.10.2-linux-x86_64.tar.gz

# 进入目录
cd elasticsearch-7.10.2/

# 启动 Elasticsearch (前台运行)
./bin/elasticsearch

基本配置[编辑 | 编辑源代码]

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

  • cluster.name: 集群名称
  • node.name: 节点名称
  • network.host: 绑定地址
  • http.port: HTTP 端口
  • discovery.seed_hosts: 集群发现种子节点

基本操作[编辑 | 编辑源代码]

创建索引[编辑 | 编辑源代码]

curl -X PUT "localhost:9200/my_index?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}
'

索引文档[编辑 | 编辑源代码]

curl -X POST "localhost:9200/my_index/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "title": "Elasticsearch 入门",
  "author": "张三",
  "content": "这是一篇关于 Elasticsearch 基础的文章",
  "publish_date": "2023-01-01",
  "tags": ["搜索", "数据库"]
}
'

搜索文档[编辑 | 编辑源代码]

curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "content": "基础"
    }
  }
}
'

高级特性[编辑 | 编辑源代码]

聚合分析[编辑 | 编辑源代码]

Elasticsearch 提供强大的聚合功能,可用于数据分析:

curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "aggs": {
    "tags_agg": {
      "terms": {
        "field": "tags.keyword"
      }
    }
  }
}
'

全文搜索[编辑 | 编辑源代码]

支持复杂的全文搜索查询,包括模糊匹配、短语匹配等:

curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "multi_match": {
      "query": "Elasticsearch 数据库",
      "fields": ["title", "content"]
    }
  }
}
'

实际应用案例[编辑 | 编辑源代码]

日志分析[编辑 | 编辑源代码]

Elasticsearch 常与 LogstashKibana 组成 ELK 技术栈,用于日志收集、存储和分析。

电子商务搜索[编辑 | 编辑源代码]

许多电子商务平台使用 Elasticsearch 实现商品搜索、过滤和排序功能。

内容管理系统[编辑 | 编辑源代码]

为网站内容提供快速、相关的搜索体验。

性能优化[编辑 | 编辑源代码]

  • 合理设置分片数量
  • 使用合适的硬件配置
  • 优化索引映射和设置
  • 使用批量操作减少请求次数
  • 定期监控集群健康状况

生态系统[编辑 | 编辑源代码]

Elasticsearch 与多个工具和技术集成良好:

  • Kibana - 数据可视化工具
  • Logstash - 数据处理管道
  • Beats - 轻量级数据采集器
  • APM - 应用性能监控

版本历史[编辑 | 编辑源代码]

Elasticsearch 的主要版本发展历程:

  • 2010年:首次发布
  • 2014年:发布 1.0 版本
  • 2016年:发布 5.0 版本
  • 2017年:发布 6.0 版本
  • 2019年:发布 7.0 版本
  • 2021年:发布 8.0 版本

学习资源[编辑 | 编辑源代码]

  • 官方文档
  • Elasticsearch 权威指南(书籍)
  • Elasticsearch 实战(书籍)

参见[编辑 | 编辑源代码]