Elasticsearch 是一款分布式搜索和分析引擎、可扩展数据存储和向量数据库,针对生产级工作负载的速度和相关性进行了优化。Elasticsearch 是 Elastic 开放 Stack 平台的基础。它支持近乎实时地搜索海量数据集、执行向量搜索、与生成式 AI 应用程序集成等等。
Elasticsearch 支持的用例包括:
……以及更多!
要了解更多关于 Elasticsearch 的特性和功能,请访问我们的产品页面。要访问有关 机器学习创新 的信息以及最新的 Elastic 对 Lucene 的贡献 的信息,可以在 搜索实验室 中找到更多信息。
设置 Elasticsearch 最简单的方法是使用Elastic Cloud 上的 Elasticsearch 服务 创建托管部署。
如果您希望自行安装和管理 Elasticsearch,可以从elastic.co/downloads/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。
此设置附带一个为期一个月的试用许可证,其中包含所有 Elastic 功能。
试用期结束后,许可证将恢复为“免费且开放 - Basic”版本。
更多信息,请参阅 Elastic 订阅。
start-local
要在本地设置 Elasticsearch 和 Kibana,请运行 start-local
脚本:
curl -fsSL https://elastic.co/start-local | sh
此脚本会创建一个包含配置文件的 elastic-start-local
文件夹,并使用 Docker 启动 Elasticsearch 和 Kibana。
运行脚本后,您可以通过以下端点访问 Elastic 服务:
该脚本会为 elastic
用户生成一个随机密码,该密码会在安装结束时显示,并存储在 .env
文件中。
此设置仅用于本地测试。HTTPS 已禁用,Elasticsearch 使用基本身份验证。出于安全考虑,Elasticsearch 和 Kibana 只能通过“localhost”访问。
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 连接:
source .env
curl $ES_LOCAL_URL -H "Authorization: ApiKey ${ES_LOCAL_API_KEY}"
要使用 elastic
用户的密码,请设置并导出 ES_LOCAL_PASSWORD
环境变量。例如:
source .env
export ES_LOCAL_PASSWORD
您可以通过 REST API 向 Elasticsearch 发送数据和其他请求。
您可以使用任何发送 HTTP 请求的客户端与 Elasticsearch 交互,
例如 https://www.elastic.co/guide/en/elasticsearch/client/index.html[Elasticsearch
语言客户端] 和 https://curl.se[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”环境变量中的密码。
您将使用以下连接详细信息:
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,然后转到“管理”>“开发工具”。
添加数据
您可以通过 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)。每行都必须以换行符 (\n
) 结尾,包括最后一行。
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
。
完整的 Elasticsearch 文档请访问elastic.co。
有关我们文档流程的信息,请参阅docs README。
elasticsearch-labs
代码库包含可执行的 Python 笔记本、示例应用程序和资源,可用于测试 Elasticsearch 的向量搜索、混合搜索和生成式 AI 用例。