通过弹性搜索获取uniq结果

时间:2019-07-23 07:06:41

标签: ruby elasticsearch kibana

获取给定日期的单个记录。如果有多个记录,则在每个请求中返回单个uniq记录(如果有单个记录,则可以返回相同的结果)。

      "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "site_name": "blog_new_post"
                    }
                },

                {
                    "match": {
                        "postdate_yyyymmdd": "20190715"
                    }
                }
            ]

        }

      },
      "size": 1
    }

我尝试过尺寸。因此,大小有时会返回相同的记录。

{
    "took": 152,
    "timed_out": false,
    "_shards": {
        "total": 1180,
        "successful": 1180,
        "failed": 0
    },
    "hits": {
        "total": 6624,
        "max_score": 3.6852486,
        "hits": [
            {
                "_index": "some-*",
                "_type": "data-*",
                "_id": "8a9e351e92e6b9b26c8d8fb0173cadd9",
                "_score": 3.6852486,
                "_source": {
                    "uniq_id": "8a9e351e92e6b9b26c8d8fb0173cadd9",
                    "postdate_yyyymmdd": "20190715"

      }
    }]
   }
}

基于uniq_id的Uniq记录。每个记录的Uniq ID都不相同。

1 个答案:

答案 0 :(得分:0)

为此,您必须在汇总的基础上汇总结果。 如您所说,您想要基于uniq_id的记录,我假设您的索引中可能对此ID有多个记录,并且您只想为每个uniq_id返回一个记录

您可以参考弹性搜索聚合文档。 您可以按最新记录对记录进行排序,并获取汇总中的top_hits。将top_hits的大小指定为1将为您的uniq_id提供1条记录

有关汇总说明,请参阅文档

Top_Hits Aggregation