【问题标题】:Get uniq results from elastic search从 elasticsearch 获得独特的结果
【发布时间】:2019-12-01 03:58:12
【问题描述】:

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

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

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

        }

      },
      "size": 1
    }

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

{
    "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 的唯一记录。每个记录的唯一 ID 不同。

【问题讨论】:

  • 您希望自己的记录在哪些条件或字段上独一无二
  • @Hrithik Manchanda 我刚刚更新了我的问题。

标签: ruby elasticsearch kibana


【解决方案1】:

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

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

有关聚合说明,请参阅文档

Top_Hits Aggregation

【讨论】:

  • uniq_id 对于每条记录都不同。上面通过 postdate 获取请求(postdate 将常见于记录而不是 uniq_id)。
  • 如果你有唯一的 uniq_id 那么你怎么能得到多条记录呢?
  • 因为 postdate_yyyymmdd 在非 uniq id 的记录中很常见。在 get request 中通过 postdate_yyyymmdd 搜索(你可以在问题上看到它)。
  • 所以您需要特定日期的记录是唯一的吗?
  • 是的,每个获取请求中都有一条 uniq 记录。注意:我用后端做了这个。如果有一些解决这个问题的建议会更高兴。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多