【发布时间】:2020-04-13 17:24:01
【问题描述】:
当我们在 Elastic 中进行任何搜索时,Elastic 会分两个阶段执行,即查询和获取阶段,如 resource“默认搜索类型:查询然后获取”部分所述。
以下是要点
- 将查询发送到每个分片
- 查找所有匹配的文档并使用本地术语/文档频率计算分数
- 构建结果优先级队列(排序、使用 from/to 进行分页等) ..
我对查询阶段的第 1 点有疑问。根据我在查询阶段本身之前的理解,elastic 将根据搜索查询中的单词从倒排索引中找到相关文档 id。 然后查询将只去特定的分片,而不是去每个分片。对吗?
因此在查询阶段将根据 document_id 获得 grom 倒排索引从分片中弹性获取这些文档,然后计算获取的文档的分数并将 id 和分数一起返回到请求节点。
在获取阶段,请求节点获取所有分数并决定需要发送给客户端的内容,然后它实际获取文档。
【问题讨论】:
标签: elasticsearch