我正在使用带有折叠的查询,以便在某个人下面收集一些文档,但是我希望根据搜索找到匹配项的文档数对结果进行排序。这是我的查询:< / p>
GET documents/_search
{
"_source": {
"includes": [
"text"
]
},
"query": {
"query_string": {
"fields": [
"text"
],
"query": "some text"
}
},
"collapse": {
"field": "person_id",
"inner_hits": {
"name": "top_mathing_docs",
"_source": {
"includes": [
"doc_year",
"text"
]
}
}
}
}
有什么建议吗?
谢谢
答案 0 :(得分:1)
如果我的理解正确,那么您需要根据 inner_hits 的计数对文档进行排序(即父文档)基于inner_hits
的{{1}}中的。
因此,结果中的父文档person_id
无关紧要。
我发现可行的唯一方法是利用Top Hits Aggregation for Field Collapse Example,下面是查询的样子。
_score
请注意,我假设POST <your_index_name>/_search
{
"size":0,
"query": {
"query_string": {
"fields": [
"text"
],
"query": "some text"
}
},
"aggs": {
"top_person_ids": {
"terms": {
"field": "person_id"
},
"aggs": {
"top_tags_hits": {
"top_hits": {
"size": 10
}
}
}
}
}
}
的类型为person_id
或任何keyword
。
另外,如果您仔细查看查询,我也提到了numeric
。这意味着我只返回聚合的结果。
另一个要注意的是,以上汇总与您在问题中发布的Field Collapse in Search Request功能无关。只是使用这种聚合,您的结果可以用类似的方式格式化。
让我知道这是否有帮助!