在我的索引中,我有這樣的檔案:
{
"name": "name",
"createdAt": 1.6117508295E12
}
{
"name": "name1",
"createdAt": 1.6117508296E12
}
{
"name": "name",
"createdAt": 1.6117508297E12
}
我想以這樣的方式撰寫查詢,以便我可以在任何 2 個檔案之間的名稱欄位之間進行比較并獲得唯一的結果。結果應該是這樣的:
{
"name": "name1",
"createdAt": 1.6117508296E12
}
{
"name": "name",
"createdAt": 1.6117508297E12
}
我還在彈性查詢中使用了 from 和 size 。我嘗試過使用折疊,但是根據大小,我得到的結果數量更少。
我正在使用彈性 7.15.2
uj5u.com熱心網友回復:
您可以簡單地將術語聚合與 top_hits 一起使用(size=1,按 createdAt 排序)。以下是您提供的示例資料的作業查詢。
{
"size": 0,
"aggs": {
"unique": {
"terms": {
"field": "name.keyword"
},
"aggs": {
"unique_names": {
"top_hits": {
"sort": [
{
"createdAt": {
"order": "asc"
}
}
],
"size": 1
}
}
}
}
}
}
和搜索結果
"aggregations": {
"unique": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "name",
"doc_count": 2,
"unique_names": {
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": null,
"hits": [
{
"_index": "71625371",
"_id": "1",
"_score": null,
"_source": {
"name": "name",
"createdAt": 1.6117508295E12
},
"sort": [
1.61175083E12
]
}
]
}
}
},
{
"key": "name1",
"doc_count": 1,
"unique_names": {
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": null,
"hits": [
{
"_index": "71625371",
"_id": "2",
"_score": null,
"_source": {
"name": "name1",
"createdAt": 1.6117508296E12
},
"sort": [
1.61175083E12
]
}
]
}
}
}
]
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/452257.html
