我有以下 ElasticSearch 查询:
{
"query": {
"bool": {
"filter": [],
"must_not": [
{
"range": {
"embedded_depth": { // <-- a property on the document stored in the index.
"gt": 0
}
}
}
]
}
},
"aggs": {
"duplicates": {
"terms": {
"field": "content_blake3", // <-- stores a hash value
"min_doc_count": 2,
"size": 1000,
"order": {
"_count": "desc"
}
},
"aggs": {
"size": {
"sum": {
"field": "fs.size" // <-- stores file size value.
}
},
"duplicate_top_hits": {
"top_hits": {
"_source": [
"content_blake3",
"file_name",
"fs.uri",
"fs.created",
"fs.modified",
"fs.size"
],
"size": 1,
"sort": [
{
"fs.created": {
"order": "asc"
}
}
]
}
}
}
}
},
"size": 0 // <-- return 0 hits, return aggregated results only.
}
查询在 Terms > Order 属性上切换,如下所示:
"order": {
"_count": "desc"
}
或
"order": {
"size": "desc"
}
我也用过:
"track_total_hits": true
确保我使用相同数量的搜索结果。
如上所示切换查询时,基于
size
的 desc
排序返回的结果集比基于 _count
的 desc
排序返回的结果集小得多。每个查询返回的两个数据集完全不同,这导致用户体验非常混乱。
谁能解释为什么?
这是这样做的正确方法吗?
有没有另一个可以完成这个查询?