Elastic search免费开源的分布式RESTful搜索引擎

Elasticsearch

Elasticsearch 是一款分布式搜索和分析引擎、可扩展数据存储和向量数据库,针对生产级工作负载的速度和相关性进行了优化。Elasticsearch 是 Elastic 开放 Stack 平台的基础。它支持近乎实时地搜索海量数据集、执行向量搜索、与生成式 AI 应用程序集成等等。

Elasticsearch 支持的用例包括:

……以及更多!

要了解更多关于 Elasticsearch 的特性和功能,请访问我们的产品页面。要访问有关 机器学习创新 的信息以及最新的 Elastic 对 Lucene 的贡献 的信息,可以在 搜索实验室 中找到更多信息。

开始

设置 Elasticsearch 最简单的方法是使用Elastic Cloud 上的 Elasticsearch 服务 创建托管部署。

如果您希望自行安装和管理 Elasticsearch,可以从elastic.co/downloads/elasticsearch下载最新版本。

在本地运行 Elasticsearch

重要提示:此内容已复制到 Elasticsearch 代码库中。请参阅 run-elasticsearch-locally.asciidoc。确保两个文件同步。https://github.com/elastic/start-local 是真实来源。

警告

请勿将这些说明用于生产部署。

此设置仅用于本地开发和测试。

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

ℹ️ 有关 start-local 设置的更多详细信息,请参阅 GitHub 上的 README 文件:https://github.com/elastic/start-local。

先决条件

  • 如果您尚未安装 Docker,请根据您的操作系统下载并安装 Docker Desktop。
  • 如果您使用的是 Microsoft Windows,请安装 Windows Subsystem for Linux (WSL)。

试用许可证

此设置附带一个为期一个月的试用许可证,其中包含所有 Elastic 功能。

试用期结束后,许可证将恢复为“免费且开放 - Basic”版本。

更多信息,请参阅 Elastic 订阅。

运行 start-local

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

language 复制代码
curl -fsSL https://elastic.co/start-local | sh

此脚本会创建一个包含配置文件的 elastic-start-local 文件夹,并使用 Docker 启动 Elasticsearch 和 Kibana。

运行脚本后,您可以通过以下端点访问 Elastic 服务:

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

此设置仅用于本地测试。HTTPS 已禁用,Elasticsearch 使用基本身份验证。出于安全考虑,Elasticsearch 和 Kibana 只能通过“localhost”访问。

API 访问

Elasticsearch 的 API 密钥会生成并存储在 .env 文件中,名为 ES_LOCAL_API_KEY。使用此密钥通过编程语言客户端 (https://www.elastic.co/guide/en/elasticsearch/client/index.html) 或 REST API (https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html) 连接到 Elasticsearch。

elastic-start-local 文件夹中,使用 curl 命令检查 Elasticsearch 连接:

language 复制代码
source .env
curl $ES_LOCAL_URL -H "Authorization: ApiKey ${ES_LOCAL_API_KEY}"

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

language 复制代码
source .env
export ES_LOCAL_PASSWORD

向 Elasticsearch 发送请求

您可以通过 REST API 向 Elasticsearch 发送数据和其他请求。
您可以使用任何发送 HTTP 请求的客户端与 Elasticsearch 交互,
例如 https://www.elastic.co/guide/en/elasticsearch/client/index.html[Elasticsearch
语言客户端] 和 https://curl.se[curl]。

使用 curl

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

language 复制代码
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 客户端:

python 复制代码
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,然后转到“管理”>“开发工具”。

添加数据

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

对于带时间戳的数据(例如日志和指标),您通常会将文档添加到由多个自动生成的支持索引组成的数据流中。

要将单个文档添加到索引,请提交指向该索引的 HTTP POST 请求。

language 复制代码
POST /customer/_doc/1
{
"firstname": "Jennifer",
"lastname": "Walters"
}

此请求会自动创建 customer 索引(如果不存在),并添加一个 ID 为 1 的新文档,同时存储并索引 firstnamelastname 字段。

新文档可立即从集群中的任何节点获取。您可以使用指定文档 ID 的 GET 请求来检索该文档:

language 复制代码
GET /customer/_doc/1

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

language 复制代码
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 的客户。

language 复制代码
GET customer/_search
{
"query" : {
"match" : { "firstname": "Jennifer" }
}
}

探索

您可以使用 Kibana 中的“发现”功能以交互方式搜索和筛选数据。
从这里开始,您可以开始创建可视化效果以及构建和共享仪表板。

首先,创建一个连接到一个或多个 Elasticsearch 索引、
数据流或索引别名的_数据视图_。

. 前往管理 > 堆栈管理 > Kibana > 数据视图
. 选择创建数据视图
. 输入数据视图的名称以及与一个或多个索引匹配的模式,
例如 customer
.选择“将数据视图保存到 Kibana”。

要开始探索,请转到“分析”>“发现”。

升级

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

从源代码构建

Elasticsearch 使用 Gradle 作为其构建系统。

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

language 复制代码
./gradlew localDistro

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

language 复制代码
./gradlew :distribution:archives:linux-tar:assemble
./gradlew :distribution:archives:darwin-tar:assemble
./gradlew :distribution:archives:windows-zip:assemble

发行版将输出到 distribution/archives

文档

完整的 Elasticsearch 文档请访问elastic.co

有关我们文档流程的信息,请参阅docs README

示例和指南

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

关于项目

Elasticsearch 是一款分布式搜索和分析引擎、可扩展数据存储和矢量数据库,专为生产级工作负载的速度和相关性而优化。Elasticsearch 是 Elastic 开放 Stack 平台的基础。它支持近乎实时地搜索海量数据集、执行矢量搜索、与生成式 AI 应用程序集成等等。
Apache-2.0
Java
74,999
25542
2653
2010-02-08
2025-10-10

增长趋势 - stars