elastic/elasticsearch
GitHub: elastic/elasticsearch
Elasticsearch 是一个开源分布式搜索引擎,用于高效存储、搜索和分析大规模数据,支持实时查询和 AI 集成。
Stars: 76758 | Forks: 25937
= Elasticsearch
Elasticsearch 是一个分布式搜索与分析引擎,可扩展的数据存储和向量数据库,专为生产级工作负载的速度与相关性而优化。它是 Elastic 开放式 Stack 平台的基础。可对海量数据集进行近实时搜索,执行向量搜索,集成生成式 AI 应用,以及更多功能。
Elasticsearch 实现的用例包括:
* [检索增强生成 (RAG)]
* [向量搜索]
* 全文搜索
* 日志
* 指标
* 应用程序性能监控 (APM)
* 安全日志
\... 以及更多!
要获取关于[机器学习创新]和 Elastic 最新[Lucene 贡献]的信息,请访问[Search Labs]。
[[get-started]]
## 入门指南
设置 Elasticsearch 最简单的方法是通过创建托管部署
[Elasticsearch Service on Elastic Cloud]。
如果您希望自行安装和管理 Elasticsearch,可以从
[elastic.co/downloads/elasticsearch]下载最新版本。
### 本地运行 Elasticsearch
////
重要:此内容已复制到 Elasticsearch 仓库中。参见 `run-elasticsearch-locally.asciidoc`。
确保两个文件保持同步。
# [警告]
请勿将这些说明用于生产部署。
# 此设置仅适用于本地开发和测试。
使用[`start-local` 脚本]在 Docker 中快速设置 Elasticsearch 和 Kibana 进行本地开发或测试。
ℹ️ 有关 `start-local` 设置的更详细信息,请参阅 GitHub 上的 [README]。
#### 前置条件
- 如果您尚未安装 Docker,请为您的操作系统[下载并安装 Docker Desktop]。
- 如果您使用 Microsoft Windows,请安装[Windows Subsystem for Linux (WSL)]。
#### 试用许可证
此设置附带一个月的试用许可证,包含所有 Elastic 功能。
试用期结束后,许可证将恢复为 **免费且开放 - Basic**。
更多信息请参阅[Elastic 订阅]。
#### 运行 `start-local`
要在本地设置 Elasticsearch 和 Kibana,请运行 `start-local` 脚本:
## [source,sh]
## curl -fsSL https://elastic.co/start-local | sh
// NOTCONSOLE
此脚本会创建一个 `elastic-start-local` 文件夹,其中包含配置文件,并使用 Docker 启动 Elasticsearch 和 Kibana。
运行脚本后,您可以通过以下端点访问 Elastic 服务:
* *Elasticsearch*: http://localhost:9200
* *Kibana*: http://localhost:5601
脚本会为 `elastic` 用户生成一个随机密码,该密码在安装结束时显示,并存储在 `.env` 文件中。
# [注意]
# 此设置仅用于本地测试。HTTPS 已禁用,Elasticsearch 使用基本身份验证。出于安全考虑,Elasticsearch 和 Kibana 仅可通过 `localhost` 访问。
#### API 访问
Elasticsearch 的 API 密钥已生成并存储在 `.env` 文件的 `ES_LOCAL_API_KEY` 中。
使用此密钥通过[编程语言客户端]或[REST API]连接到 Elasticsearch。
在 `elastic-start-local` 文件夹中,使用 `curl` 检查与 Elasticsearch 的连接:
## [source,sh]
## source .env
curl $ES_LOCAL_URL -H "Authorization: ApiKey ${ES_LOCAL_API_KEY}"
要使用 `elastic` 用户的密码,请设置并导出 `ES_LOCAL_PASSWORD` 环境变量。例如:
## [source,sh]
## source .env
export ES_LOCAL_PASSWORD
// NOTCONSOLE
### 向 Elasticsearch 发送请求
您可以通过 REST API 向 Elasticsearch 发送数据和其他请求。
您可以使用任何发送 HTTP 请求的客户端与 Elasticsearch 交互,
例如[Elasticsearch 语言客户端]和 [curl]。
#### 使用 curl
这是一个使用基本身份验证创建新 Elasticsearch 索引的 curl 命令示例:
## [source,sh]
## curl -u elastic:$ES_LOCAL_PASSWORD \
-X PUT \
http://localhost:9200/my-new-index \
-H 'Content-Type: application/json'
// NOTCONSOLE
#### 使用语言客户端
要使用语言客户端连接到本地开发的 Elasticsearch 集群,您可以使用 `elastic` 用户名和存储在 `ES_LOCAL_PASSWORD` 环境变量中的密码进行基本身份验证。
您将使用以下连接详情:
* **Elasticsearch 端点**: `http://localhost:9200`
* **用户名**: `elastic`
* **密码**: `$ES_LOCAL_PASSWORD` (您在环境变量中设置的值)
例如,使用 Python `elasticsearch` 客户端连接:
## [source,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 请求。
## 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 索引、数据流或索引别名的 _数据视图_。
. 转到 **管理 > Stack 管理 > Kibana > 数据视图**。
. 选择 **创建数据视图**。
. 输入数据视图的名称和匹配一个或多个索引的模式,例如 _customer_。
. 选择 **将数据视图保存到 Kibana**。
要开始探索,请转到 **分析 > 发现**。
[[upgrade]]
## 升级
要从旧版 Elasticsearch 升级,请参阅
[Elasticsearch 升级文档]。
[[build-source]]
## 从源代码构建
Elasticsearch 使用 [Gradle] 作为其构建系统。
## 要为本地操作系统构建发行版并在完成后打印其输出位置,请运行:
## ./gradlew localDistro
## 要为其他平台构建发行版,请运行相关命令:
## ./gradlew :distribution:archives:linux-tar:assemble
./gradlew :distribution:archives:darwin-tar:assemble
./gradlew :distribution:archives:windows-zip:assemble
发行版输出到 `distribution/archives`。
要运行测试套件,请参阅 xref:TESTING.asciidoc[TESTING]。
[[docs]]
## 文档
有关完整的 Elasticsearch 文档,请访问
[elastic.co]。
有关我们文档流程的信息,请参阅
xref:https://github.com/elastic/elasticsearch/blob/main/docs/README.md[docs README]。
[[examples]]
## 示例与指南
[`elasticsearch-labs`] 仓库包含可执行的 Python 笔记本、示例应用和资源,用于测试 Elasticsearch 在向量搜索、混合搜索和生成式 AI 用例中的应用。
[[contribute]]
## 贡献
有关贡献指南,请参阅 xref:CONTRIBUTING.md[CONTRIBUTING]。
[[questions]]
## 有问题?需要帮助?有建议?
* 要报告错误或请求功能,请创建一个
[GitHub Issue]。请确保
其他人没有为同一主题创建过 issue。
* 在使用 Elasticsearch 时需要帮助?请访问
[Elastic 论坛]或 [Slack]。社区成员或 Elastic 工程师将乐意为您提供帮助。
标签:Apex, BurpSuite集成, Elastic Stack, JS文件枚举, NVIDIA, RESTful API, 代码示例, 全文搜索, 分布式系统, 可扩展性, 后台面板检测, 向量搜索, 向量数据库, 响应大小分析, 域名枚举, 大数据, 安全日志, 实时搜索, 应用性能管理, 提示词优化, 搜索引擎, 数据分析, 数据库, 机器学习, 检索增强生成, 流量重放, 生成式AI, 监控, 目录扫描, 索引, 请求拦截, 近实时搜索, 逆向工具