我有以下表结构
change_id saveDate id
-------------------------------
1 2014-04-01 205
2 2014-05-01 205
3 2014-03-31 111
4 2014-04-01 111
5 2014-04-01 333
Run Code Online (Sandbox Code Playgroud)
现在我想获取特定 ids = [205, 111] 的最新记录。我应该得到 change_id [2,4] 的记录。
到目前为止,我的 ElasticSearch 查询是:
{
"fields": [
"Something.id",
"Something.change_id",
"Something.saveDate"
],
"query": {
"terms": {
"Something.id": [
"2015",
"111"
]
}
},
"sort": [
{
"Something.saveDate": {
"order": "desc"
}
}
],
"aggs": {
"id": {
"terms": {
"field": "Something.id",
"size": 20
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到 4 行 change_id=[2, 1, 4, 3] 的结果,它按 saveDate 对 desc 进行排序。
如何使用查询过滤并获得两行,其中 change_id=[4, 2] ?
为此,您可以使用top_hits 聚合。它还具有源过滤和排序功能。
{
"query": {
"bool": {
"filter": {
"terms": {
"Something.id": [
"205",
"111"
]
}
}
}
},
"size": 0,
"aggs": {
"unique_id": {
"terms": {
"field": "Something.id",
"size": 20
},
"aggs": {
"top_result": {
"top_hits": {
"size": 1,
"_source": ["Something.id", "Something.change_id", "Something.saveDate"],
"sort": {
"Something.saveDate" : "desc"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |