Elasticsearch Aggregation不能按预期的方式工作

时间:2016-12-11 11:50:25

标签: elasticsearch

我有一个消息索引,我也为每个messageHash存储message。我还有更多的领域。索引中有多个重复的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
          }
        }
      }
    }
  }
}

我仍然收到重复的消息,而且它也没有按日期排序!就像我没有添加聚合一样。我无法弄清楚它有什么问题。

1 个答案:

答案 0 :(得分: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