Elasticsearch GitHub 官方介绍与入门 – wiki大全

Elasticsearch:官方介绍与入门指南

Elasticsearch 是一个功能强大的开源分布式搜索和分析引擎,以其卓越的速度和可扩展性而闻名。作为 Elastic Stack(前身为 ELK Stack,包括 Elasticsearch、Logstash 和 Kibana)的核心组件,它被广泛应用于各种场景,从实时数据分析到全文本搜索,再到最新的向量搜索和生成式 AI 集成。

官方介绍与核心能力

Elasticsearch 基于 Apache Lucene 构建,提供了一个分布式、RESTful 的搜索和分析能力。自 2010 年发布以来,它已成为处理大量数据的首选工具,尤其擅长:

  • 近实时搜索: 在海量数据集中实现快速、准确的搜索结果。
  • 向量搜索: 支持现代信息检索,并与生成式 AI 应用无缝集成。
  • 全文本搜索: 提供强大的文本匹配和相关性评分功能。
  • 日志和指标分析: 高效存储和分析日志、监控数据,帮助用户洞察系统性能和行为。
  • 应用性能监控 (APM): 收集、存储和分析应用程序的性能数据,以便快速识别和解决问题。
  • 安全日志分析: 帮助组织检测和响应安全威胁。

Elasticsearch 能够高效地存储和索引结构化、非结构化、数值型以及地理空间数据,并通过其 REST API 接收 JSON 对象(文档)进行索引。

核心概念

要深入理解 Elasticsearch,掌握以下核心概念至关重要:

  • 节点 (Node): Elasticsearch 集群中的一个独立运行实例。
  • 集群 (Cluster): 由一个或多个节点组成的集合,共同存储和分析数据。
  • 索引 (Index): 文档的逻辑容器,类似于关系型数据库中的“数据库”。
  • 文档 (Document): 可被索引的基本信息单元,以 JSON 格式存储。
  • 分片 (Shard): 索引可以水平划分为多个分片,实现数据的分布式存储和并行处理,从而提高可伸缩性。
  • 副本 (Replica): 分片的副本,提供冗余以实现容错,并能提高搜索吞吐量。

入门指南

最简单快捷地在本地环境开始使用 Elasticsearch 和 Kibana 的方式是使用 Docker。

1. 安装与运行

通过以下 curl 命令,可以方便地下载并启动 Elasticsearch 和 Kibana 的 Docker 容器:

bash
curl -fsSL https://elastic.co/start-local | sh

此命令将自动为您设置一个包含 Elasticsearch 和 Kibana 的本地环境。需要注意的是,新版本的 Elasticsearch 默认启用了安全功能。

2. 与 Elasticsearch 交互 (CRUD 操作)

Elasticsearch 提供了一个 RESTful API,允许您使用 HTTP 方法和 JSON 数据进行交互。以下是一些常用的 curl 命令示例,假设 Elasticsearch 在 localhost:9200 上运行。

a. 创建索引
索引是数据存储的地方。
bash
curl -X PUT "localhost:9200/my_index?pretty"

b. 添加文档 (索引文档)
可以指定文档 ID,也可以让 Elasticsearch 自动生成。

  • 自动生成 ID:
    bash
    curl -X POST "localhost:9200/my_index/_doc?pretty" -H 'Content-Type: application/json' -d'
    {
    "title": "Getting Started with Elasticsearch",
    "author": "AI Assistant",
    "views": 100
    }
    '
  • 指定 ID (例如 1):
    bash
    curl -X PUT "localhost:9200/my_index/_doc/1?pretty" -H 'Content-Type: application/json' -d'
    {
    "title": "Elasticsearch Basics",
    "author": "AI Assistant",
    "views": 50
    }
    '

c. 获取文档
根据文档 ID 检索文档。
bash
curl -X GET "localhost:9200/my_index/_doc/1?pretty"

d. 更新文档
可以通过 _update 端点进行部分更新,也可以通过 PUT 完全替换文档。

  • 部分更新:
    bash
    curl -X POST "localhost:9200/my_index/_update/1?pretty" -H 'Content-Type: application/json' -d'
    {
    "doc": {
    "views": 150
    }
    }
    '
  • 完全替换 (使用 PUT,与添加文档并指定 ID 类似):
    bash
    curl -X PUT "localhost:9200/my_index/_doc/1?pretty" -H 'Content-Type: application/json' -d'
    {
    "title": "Elasticsearch Fundamentals",
    "author": "AI Assistant",
    "views": 200,
    "published": true
    }
    '

e. 删除文档
根据文档 ID 删除文档。
bash
curl -X DELETE "localhost:9200/my_index/_doc/1?pretty"

f. 删除索引
删除整个索引及其所有文档。
bash
curl -X DELETE "localhost:9200/my_index?pretty"

3. 搜索数据

Elasticsearch 提供了强大的搜索能力。

a. 简单搜索 (URI 搜索)
在所有字段中搜索特定术语。
bash
curl -X GET "localhost:9200/my_index/_search?q=Elasticsearch&pretty"

b. 复杂搜索 (请求体搜索)
使用请求体中的 JSON 查询进行更高级的搜索。
bash
curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"title": "fundamentals"
}
}
}
'

Kibana

Kibana 是一个基于浏览器的可视化工具,与 Elasticsearch 无缝协作。它允许您:

  • 交互式探索您的数据。
  • 构建仪表盘和可视化图表。
  • 使用 Dev Tools 直接在 Web 界面中向 Elasticsearch 发送请求。

如果您通过 start-local 脚本安装了 Elasticsearch 和 Kibana,通常可以在 http://localhost:5601 访问 Kibana。

总结

Elasticsearch 提供了一个强大、灵活且可扩展的解决方案,适用于各种数据搜索和分析需求。通过理解其核心概念并掌握基本的 API 操作,您可以快速开始构建高效的数据驱动型应用。结合 Kibana,您将能够更深入地洞察您的数据。

滚动至顶部