首页 > 解决方案 > 在查询阶段之前查找文档 ID?

问题描述

当我们在 Elastic 中进行任何搜索时,Elastic 分两个阶段执行,即查询和获取阶段,如本资源的“默认搜索类型:查询然后获取”部分所述

以下是要点

  1. 将查询发送到每个分片
  2. 查找所有匹配的文档并使用本地术语/文档频率计算分数
  3. 构建结果的优先级队列(排序、使用 from/to 进行分页等)..

我对查询阶段的第 1 点有疑问。根据我在查询阶段本身之前的理解,elastic 将根据搜索查询中的单词从倒排索引中找到相关文档 id。然后查询将只去特定的分片,而不是去每个分片。那是对的吗 ?

因此,在查询阶段,将根据 document_id 获得 grom 倒排索引从分片中弹性获取这些文档,然后计算获取的文档的分数并将 id 和分数一起返回到请求节点。

在获取阶段,请求节点获取所有分数并决定需要发送给客户端的内容,然后它实际获取文档。

标签: elasticsearch

解决方案


我对查询阶段的第 1 点有疑问。根据我在查询阶段本身之前的理解,elastic 将根据搜索查询中的单词从倒排索引中找到相关文档 id。然后查询将只去特定的分片,而不是去每个分片。那是对的吗 ?

这里 elastic 将在查询阶段之前根据文档 id 识别分片。倒排索引在这里没有出现。一旦查询进入分片,弹性引用倒排索引以查找哪个术语存在于哪个文件/索引中。

其余内容与您在提到的资源中指出的相同


推荐阅读