我所有的文档都有一个uid带有ID 的字段,该ID将文档链接到用户。有多个文档相同uid。
uid
我想对所有文档执行搜索,每个文档仅返回得分最高的文档uid。
选择相关文档的multi_match查询是一个简单的查询。
multi_match
您需要一个top_hits汇总。
top_hits
对于您的具体情况:
{ "query": { "multi_match": { ... } }, "aggs": { "top-uids": { "terms": { "field": "uid" }, "aggs": { "top_uids_hits": { "top_hits": { "sort": [ { "_score": { "order": "desc" } } ], "size": 1 } } } } } }
上面的查询会执行您的multi_match查询并基于汇总结果uid。对于每个uid存储桶,它仅返回一个结果,但是在存储桶中的所有文档都按照_score后代顺序排序之后。
_score