Skip to main content
Elasticsearch 是一个分布式、RESTful 搜索与分析引擎。它提供分布式、多租户支持的全文本搜索引擎,具有HTTP Web界面和 schema-free JSON文档。支持关键词搜索、向量搜索、混合搜索和复杂过滤。
The ElasticsearchRetriever 是一个通用包装器,通过 Query DSL 实现对所有 Elasticsearch 功能的灵活访问。对于大多数用例,其他类(ElasticsearchStore, ElasticsearchEmbeddings 等)已足够,但若需要可使用 ElasticsearchRetriever。 本指南将帮助您入门 Elasticsearch retriever。如需了解所有 ElasticsearchRetriever 功能和配置的详细文档,请访问 API reference。

集成细节

配置

设置 Elasticsearch 实例主要有两种方式:
  • Elastic Cloud: Elastic Cloud 是托管型Elasticsearch服务。注册 免费试用。 若连接无需登录凭证的Elasticsearch实例(如安全启用的Docker实例),请将Elasticsearch URL、索引名称与嵌入对象一起传递给构造函数。
  • 本地安装Elasticsearch: 通过运行本地Elasticsearch开始。最便捷的方式是使用官方Elasticsearch Docker镜像。更多详情请参考 Elasticsearch Docker文档。
若需启用单个查询的自动化追踪,可设置 LangSmith API密钥(取消注释下方代码):

安装

本检索器位于 langchain-elasticsearch 包中。为演示目的,我们将同时安装 langchain-community 以生成文本 embeddings。
langchain-community包已不再维护。从langchain_community导入的示例可能过时或无法使用。请谨慎使用。

配置

此处定义与Elasticsearch的连接。本例使用本地运行实例,也可注册 Elastic Cloud 并启动 免费试用。
向量搜索示例使用随机嵌入进行演示。实际应用中请选择LangChain提供的 Embeddings 类。

定义示例数据

索引数据

通常用户会在已有Elasticsearch索引时使用 ElasticsearchRetriever。此处索引示例文本文档。若已通过 ElasticsearchStore.from_documents 创建索引也可使用。

初始化

向量搜索

使用假嵌入进行密集向量检索。

BM25

传统关键词匹配。

混合搜索

通过 Reciprocal Rank Fusion(RRF)组合向量搜索与BM25搜索的结果集。

模糊匹配

支持拼写错误的词匹配。

复杂过滤

组合不同字段的过滤条件。
注意查询匹配位于最上方。其他通过过滤条件筛选的文档也包含在结果集中,但它们得分相同。

自定义文档映射

可自定义将Elasticsearch结果(hit)转换为LangChain文档的函数。

使用

基于上述示例,使用 invoke 发起单次查询。

API参考

如需了解所有 ElasticsearchRetriever 功能和配置的详细文档,请访问 API reference。
官方原文:src/oss/python/integrations/retrievers/elasticsearch_retriever.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026