elasticsearch - 在查询阶段之前查找文档 ID?
问题描述
当我们在 Elastic 中进行任何搜索时,Elastic 分两个阶段执行,即查询和获取阶段,如本资源的“默认搜索类型:查询然后获取”部分所述
以下是要点
- 将查询发送到每个分片
- 查找所有匹配的文档并使用本地术语/文档频率计算分数
- 构建结果的优先级队列(排序、使用 from/to 进行分页等)..
我对查询阶段的第 1 点有疑问。根据我在查询阶段本身之前的理解,elastic 将根据搜索查询中的单词从倒排索引中找到相关文档 id。然后查询将只去特定的分片,而不是去每个分片。那是对的吗 ?
因此,在查询阶段,将根据 document_id 获得 grom 倒排索引从分片中弹性获取这些文档,然后计算获取的文档的分数并将 id 和分数一起返回到请求节点。
在获取阶段,请求节点获取所有分数并决定需要发送给客户端的内容,然后它实际获取文档。
解决方案
我对查询阶段的第 1 点有疑问。根据我在查询阶段本身之前的理解,elastic 将根据搜索查询中的单词从倒排索引中找到相关文档 id。然后查询将只去特定的分片,而不是去每个分片。那是对的吗 ?
这里 elastic 将在查询阶段之前根据文档 id 识别分片。倒排索引在这里没有出现。一旦查询进入分片,弹性引用倒排索引以查找哪个术语存在于哪个文件/索引中。
其余内容与您在提到的资源中指出的相同
推荐阅读
- javascript - (节点:2724)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“第一个”
- python - Python,如何检查行的第一个元素是否在csv doc上重复
- reactjs - componentWillMount() 的 React JS 测试用例,异步测试 API 调用
- scala - sbt 新项目创建:没有 SDK 问题,下载 JDK 失败
- r-caret - 使用 caret 和 roc() 时正确的响应和预测器参数
- java - 有多少个基 b 使得数字的基 b 表示以 1 开头?
- sql - 需要使用以下规范编写查询
- excel - 如何自动化这些公式?
- sql-server - 我正在搜索多个数据库的循环查询并将结果插入到一个数据库中的现有表中以收集所有数据
- javascript - 在条件语句中混合函数和 const/let 会导致 Safari 中的 ReferenceError