elasticsearch

elasticsearch

高性能分布式搜索和分析引擎 支持海量数据实时处理

Elasticsearch是一款开源的分布式搜索和分析引擎,同时也是可扩展的数据存储和向量数据库。它专为生产环境优化,提供卓越的速度和相关性。作为Elastic Stack的核心组件,Elasticsearch支持近实时处理海量数据、执行向量搜索以及与生成式AI应用集成。它广泛应用于全文搜索、日志分析、指标监控、应用性能管理和安全日志等领域,为组织提供强大的数据处理和分析能力。

Elasticsearch搜索引擎分析引擎数据存储向量数据库Github开源项目

= Elasticsearch

Elasticsearch 是一个分布式搜索和分析引擎、可扩展数据存储和向量数据库,针对生产规模工作负载的速度和相关性进行了优化。Elasticsearch 是 Elastic 开放堆栈平台的基础。它可以在海量数据集上进行近实时搜索、执行向量搜索、与生成式 AI 应用集成,以及更多功能。

Elasticsearch 支持的用例包括:

  • 检索增强生成 (RAG)
  • 向量搜索
  • 全文搜索
  • 日志
  • 指标
  • 应用性能监控 (APM)
  • 安全日志

...还有更多!

要了解 Elasticsearch 的特性和功能,请访问我们的产品页面。

要获取机器学习创新和 Elastic 最新的 Lucene 贡献信息,可以在 Search Labs 中找到更多信息。

== 入门

设置 Elasticsearch 最简单的方法是在 Elastic Cloud 上创建一个托管部署。

如果您更喜欢自己安装和管理 Elasticsearch,可以从 elastic.co/downloads/elasticsearch 下载最新版本。

=== 在本地运行 Elasticsearch

[警告]

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

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

以下命令可帮助您快速在 Docker 中启动一个单节点 Elasticsearch 集群和 Kibana。此设置用于本地开发或测试。

==== 先决条件

如果您尚未安装 Docker,请为您的操作系统下载并安装 Docker Desktop。

==== 设置环境变量

配置以下环境变量。

[source,sh]

export ELASTIC_PASSWORD="<ES_密码>" # "elastic" 用户的密码 export KIBANA_PASSWORD="<KIB_密码>" # Kibana 内部使用,必须至少 6 个字符

==== 创建 Docker 网络

要同时运行 Elasticsearch 和 Kibana,您需要创建一个 Docker 网络:

[source,sh]

docker network create elastic-net

==== 运行 Elasticsearch

使用以下命令启动 Elasticsearch 容器:

[source,sh]

docker run -p 127.0.0.1:9200:9200 -d --name elasticsearch --network elastic-net
-e ELASTIC_PASSWORD=$ELASTIC_PASSWORD
-e "discovery.type=single-node"
-e "xpack.security.http.ssl.enabled=false"
-e "xpack.license.self_generated.type=trial"
docker.elastic.co/elasticsearch/elasticsearch:{version}

==== 运行 Kibana (可选)

要运行 Kibana,您必须首先在 Elasticsearch 容器中设置 kibana_system 密码。

[source,sh]

在 ES 容器中配置 Kibana 密码

curl -u elastic:$ELASTIC_PASSWORD
-X POST
http://localhost:9200/_security/user/kibana_system/_password
-d '{"password":"'"$KIBANA_PASSWORD"'"}'
-H 'Content-Type: application/json'

使用以下命令启动 Kibana 容器:

[source,sh]

docker run -p 127.0.0.1:5601:5601 -d --name kibana --network elastic-net
-e ELASTICSEARCH_URL=http://elasticsearch:9200
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200
-e ELASTICSEARCH_USERNAME=kibana_system
-e ELASTICSEARCH_PASSWORD=$KIBANA_PASSWORD
-e "xpack.security.enabled=false"
-e "xpack.license.self_generated.type=trial"
docker.elastic.co/kibana/kibana:{version}

.试用许可 [%collapsible]

服务启动时使用试用许可。试用许可可在 30 天的试用期内启用 Elasticsearch 的所有功能。试用期过后,许可将降级为基本许可,基本许可是永久免费的。如果您更愿意跳过试用并使用基本许可,请将 xpack.license.self_generated.type 变量的值设置为 basic。有关不同许可之间的详细功能比较,请参阅我们的订阅页面。

==== 向 Elasticsearch 发送请求

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

===== 使用 curl

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

[source,sh]

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

===== 使用语言客户端

要使用语言客户端连接到本地开发 Elasticsearch 集群,您可以使用 elastic 用户名和在环境变量中设置的密码进行基本身份验证。

您将使用以下连接详情:

  • Elasticsearch 端点: http://localhost:9200
  • 用户名: elastic
  • 密码: $ELASTIC_PASSWORD (您在环境变量中设置的值)

例如,使用 Python elasticsearch 客户端连接:

[source,python]

import os from elasticsearch import Elasticsearch

username = 'elastic' password = os.getenv('ELASTIC_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 的新文档,并 存储和索引 firstnamelastname 字段。

新文档可立即从集群中的任何节点访问。 您可以使用指定其文档 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中的Discover功能交互式地搜索和筛选你的数据。 从那里,你可以开始创建可视化图表并构建和共享仪表板。

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

. 转到管理 > 堆栈管理 > Kibana > 数据视图。 . 选择创建数据视图。 . 输入数据视图的名称和匹配一个或多个索引的模式,例如_customer_。 . 选择保存数据视图到Kibana

要开始探索,请转到分析 > Discover

[[upgrade]] == 升级

要从Elasticsearch的早期版本升级,请参阅 https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html[Elasticsearch升级文档]。

[[build-source]] == 从源代码构建

Elasticsearch使用https://gradle.org[Gradle]作为其构建系统。

要为你的本地操作系统构建一个分发版并在完成时打印其输出位置,运行:

./gradlew localDistro

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

./gradlew :distribution:archives:linux-tar:assemble ./gradlew :distribution:archives:darwin-tar:assemble ./gradlew :distribution:archives:windows-zip:assemble

要为所有支持的平台构建分发版,运行:

./gradlew assemble

分发版输出到distribution/archives

要运行测试套件,请参阅xref:TESTING.asciidoc[TESTING]。

[[docs]] == 文档

完整的Elasticsearch文档请访问 https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html[elastic.co]。

有关我们的文档流程的信息,请参阅 xref:docs/README.asciidoc[docs README]。

[[examples]] == 示例和指南

https://github.com/elastic/elasticsearch-labs[`elasticsearch-labs`]仓库包含可执行的Python笔记本、示例应用和资源,用于测试Elasticsearch的向量搜索、混合搜索和生成式AI用例。

[[contribute]] == 贡献

有关贡献指南,请参阅xref:CONTRIBUTING.md[CONTRIBUTING]。

[[questions]] == 问题?问题?建议?

编辑推荐精选

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多