Elasticsearch全解析:功能、上手、使用及开发指南
2026/7/5 8:40:40 网站建设 项目流程

Elasticsearch是什么?

Elasticsearch是一个分布式搜索和分析引擎,也是可扩展的数据存储和向量数据库,针对生产规模的工作负载在速度和相关性方面进行了优化。它是Elastic开放堆栈平台的基础。借助Elasticsearch,可以对海量数据集进行近实时搜索、执行向量搜索、与生成式AI应用集成等等。其应用场景包括:检索增强生成(RAG)、向量搜索、全文搜索、日志分析、指标监控、应用性能监控(APM)、安全日志分析等。

若想了解Elasticsearch的更多特性和功能,可访问产品页面。若要获取有关机器学习创新以及Elastic对最新Lucene贡献的信息,可在Search Labs中找到更多内容。

如何快速上手Elasticsearch?

设置Elasticsearch最简单的方法是在Elastic Cloud上使用Elasticsearch Service创建托管部署。如果想自行安装和管理Elasticsearch,可以从elastic.co/downloads/elasticsearch下载最新版本。

本地运行Elasticsearch要注意什么?

注意:请勿将这些说明用于生产部署,此设置仅用于本地开发和测试。

使用 `start-local` 脚本可以在Docker中快速为本地开发或测试设置Elasticsearch和Kibana。

前提条件:如果尚未安装Docker,需为操作系统下载并安装Docker Desktop。如果使用的是Microsoft Windows,则需要安装适用于Linux的Windows子系统(WSL)。

试用许可证:此设置附带一个为期一个月的试用许可证,包含Elastic的所有功能。试用期满后,许可证将恢复为免费开源的Basic版本。更多信息请参考Elastic订阅计划。

如何运行 `start-local`?

要在本地设置Elasticsearch和Kibana,需运行 `start-local` 脚本:

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

该脚本会创建一个 `elastic-start-local` 文件夹,其中包含配置文件,并使用Docker启动Elasticsearch和Kibana。运行脚本后,可以通过以下端点访问Elastic服务:

Elasticsearch: http://localhost:9200

Kibana: http://localhost:5601

脚本会为 `elastic` 用户生成一个随机密码,该密码会在安装结束时显示,并存储在 `.env` 文件中。

注意:此设置仅用于本地测试,HTTPS已禁用,Elasticsearch使用基本身份验证。出于安全考虑,Elasticsearch和Kibana仅可通过本地主机访问。

怎样进行API访问?

Elasticsearch的API密钥会生成并存储在 `.env` 文件中,名为 `ES_LOCAL_API_KEY`。可以使用此密钥通过编程语言客户端或REST API连接到Elasticsearch。在 `elastic-start-local` 文件夹中,使用 `curl` 检查与Elasticsearch的连接:

source .env

curl $ES_LOCAL_URL -H "Authorization: ApiKey ${ES_LOCAL_API_KEY}"

若要使用 `elastic` 用户的密码,需设置并导出 `ES_LOCAL_PASSWORD` 环境变量,例如:

source .env

export ES_LOCAL_PASSWORD

如何向Elasticsearch发送请求?

可以通过REST API向Elasticsearch发送数据和其他请求。可以使用任何发送HTTP请求的客户端与Elasticsearch进行交互,例如Elasticsearch语言客户端和 `curl`。

如何使用 `curl` 发送请求?

以下是一个使用基本身份验证创建新Elasticsearch索引的 `curl` 命令示例:

curl -u elastic:$ES_LOCAL_PASSWORD \ -X PUT \ http://localhost:9200/my-new-index \ -H 'Content-Type: application/json'

如何使用语言客户端连接?

若要使用语言客户端连接到本地开发的Elasticsearch集群,可以使用 `elastic` 用户名和存储在 `ES_LOCAL_PASSWORD` 环境变量中的密码进行基本身份验证。连接信息如下:

Elasticsearch端点: http://localhost:9200

用户名: elastic

密码: $ES_LOCAL_PASSWORD(在环境变量中设置的值)

例如,使用Python的 `elasticsearch` 客户端进行连接:

import os

from elasticsearch import Elasticsearch

username = 'elastic'

password = os.getenv('ES_LOCAL_PASSWORD') # 在环境变量中设置的值

client = Elasticsearch(

"http://localhost:9200",

basic_auth=(username, password)

)

print(client.info())

如何使用开发工具控制台?

Kibana的开发控制台提供了一种简单的方式来试验和测试请求。要访问控制台,打开Kibana,然后转到“管理”>“开发工具”。

怎样添加数据到Elasticsearch?

可以通过REST API将JSON对象(文档)索引到Elasticsearch中。无论拥有的是结构化或非结构化文本、数值数据还是地理空间数据,Elasticsearch都能高效地存储和索引这些数据,以支持快速搜索。

对于带有时间戳的数据,如日志和指标,通常将文档添加到由多个自动生成的后备索引组成的数据流中。

如何添加单个文档?

要向索引中添加单个文档,可提交一个针对该索引的HTTP POST请求:

POST /customer/_doc/1

{

"firstname": "Jennifer",

"lastname": "Walters"

}

此请求会在 `customer` 索引不存在时自动创建该索引,添加一个ID为1的新文档,并存储和索引 `firstname` 和 `lastname` 字段。新文档可立即从集群中的任何节点检索,可以使用指定文档ID的GET请求来获取它:

GET /customer/_doc/1

如何添加多个文档?

若要在一个请求中添加多个文档,可使用 `_bulk` API。批量数据必须是换行分隔的JSON(NDJSON),每行必须以换行符(` `)结尾,包括最后一行。

PUT customer/_bulk

{ "create": { } }

{ "firstname": "Monica", "lastname": "Rambeau" }

{ "create": { } }

{ "firstname": "Carol", "lastname": "Danvers" }

{ "create": { } }

{ "firstname": "Wanda", "lastname": "Maximoff" }

{ "create": { } }

{ "firstname": "Jennifer", "lastname": "Takeda" }

如何进行搜索?

索引后的文档可进行近实时搜索。以下搜索会匹配 `customer` 索引中所有名字为Jennifer的客户:

GET customer/_search

{

"query": {

"match": {

"firstname": "Jennifer"

}

}

}

怎样探索数据?

可以使用Kibana中的“发现”功能来交互式地搜索和过滤数据。从这里,可以开始创建可视化图表、构建和共享仪表盘。

要开始使用,需创建一个连接到一个或多个Elasticsearch索引、数据流或索引别名的数据视图。转到“管理”>“堆栈管理”>“Kibana”>“数据视图”,选择“创建数据视图”,输入数据视图的名称和匹配一个或多个索引的模式,如 `customer`,然后选择“保存数据视图到Kibana”。要开始探索数据,转到“分析”>“发现”。

如何进行升级?

若要从早期版本的Elasticsearch进行升级,请参阅Elasticsearch升级文档。

怎样从源代码构建?

Elasticsearch使用Gradle作为其构建系统。要为本地操作系统构建发行版并在完成后打印其输出位置,请运行:

./gradlew localDistro

要为其他平台构建发行版,请运行相关命令:

./gradlew :distribution:archives:linux-tar:assemble

./gradlew :distribution:archives:darwin-tar:assemble

./gradlew :distribution:archives:windows-zip:assemble

发行版将输出到 `distribution/archives` 目录。要运行测试套件,请参阅 `TESTING`。

在哪里查看文档?

完整的Elasticsearch文档请访问elastic.co。有关文档流程的信息,请参阅文档的README。

有哪些示例和指南?

`elasticsearch-labs` 仓库包含可执行的Python笔记本、示例应用程序以及用于测试Elasticsearch在向量搜索、混合搜索和生成式AI用例的资源。

如何进行贡献?

有关贡献指南,请参阅 `CONTRIBUTING`。

怎样反馈与获取支持?

如果发现了bug或有功能请求,请在GitHub上创建一个Issue。请确保没有其他人已经为同一主题创建了Issue。如果在使用Elasticsearch时需要帮助,可以在Elastic论坛或Slack上寻求帮助,社区成员或Elastic工程师将很乐意协助。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询