我也有一条消息索引,我也为每个messageHash
存储message
。我也有许多其他 Realm 。索引中有多个重复的message
字段,例如“你好”。我想检索唯一的消息。
这是我编写的用于搜索唯一消息并按日期对其进行排序的查询。
{
"query": {
"bool": {
"must": {
"term": {
"message": "Hello"
}
},
"must_not": [
{
"term": {
"user1": "guest"
}
},
{
"term": {
"user2": "guest"
}
}
]
}
},
"aggs": {
"top_messages": {
"terms": {
"field": "messageHash"
},
"aggs": {
"top_messages_hits": {
"top_hits": {
"sort": [
{
"date": {
"order": "desc"
}
},
"_score"
],
"size": 1
}
}
}
}
}
}
我仍然收到重复的消息,也没有按日期排序!就像我还没有添加聚合一样。我不知道这是怎么回事。
最佳答案
如果其他人遇到相同的问题...请记住,响应将如下所示:
{
"took" : X,
"timed_out" : false,
"_shards" : {
"total" : X,
"successful" : X,
"failed" : X
},
"hits" : {
"total" : X,
"max_score" : X,
"hits" : [
....
....
]
},
"aggregations" : {
"top_messages" : {
"doc_count_error_upper_bound" : X,
"sum_other_doc_count" : X,
"buckets" : [
{
"key" : "XXXXXXXXXXXXXXXXXXXXXXXX",
"doc_count" : X,
"top_messages_hits" : {
"hits" : {
"total" : X,
"max_score" : null,
"hits" : [
.....
.....
]
}
您将在第一段中获得查询结果而不进行汇总。只需向下滚动并检查聚合段。
如果您不希望第一段,可以在查询中传递
"size"=0
,如此处所述:https://www.elastic.co/guide/en/elasticsearch/reference/current/returning-only-agg-results.html
关于elasticsearch - Elasticsearch Aggregation无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085826/