在 Elasticsearch 的Collapse 功能中,“最佳匹配文档”是指在每个分组(由`collapse`参数指定的字段值)中,根据查询的排序规则(`sort`)被选中的那一个文档。换句话说,它是每个分组中“最符合查询条件”的文档。
“最佳”的定义
“最佳”的具体含义取决于你的查询排序规则。排序规则可以基于以下内容:
1. 相关性得分(Relevance Score):
• 如果没有显式指定排序规则,Elasticsearch 默认使用相关性得分(`_score`),即文档与查询的匹配程度。相关性得分越高,文档越“相关”。
2. 字段值(Field Values):
• 如果指定了排序字段(如`sort: ["http.response.bytes"]`),则“最佳”文档是该字段值最大的文档(如果是降序排序)或最小的文档(如果是升序排序)。
3. 自定义排序规则:
• 你还可以根据多个字段或复杂的排序规则来定义“最佳”文档,例如按时间戳排序、按用户评分排序等。
示例
假设你有一个日志索引,记录了用户的 HTTP 请求,字段包括:
• `user.id`:用户标识
• `http.response.bytes`:响应字节数
• `@timestamp`:时间戳
场景 1:按相关性得分选择最佳文档
查询&#