【问题标题】:Elasticsearch - How to get the latest record in each group with filter?Elasticsearch - 如何使用过滤器获取每个组中的最新记录?
【发布时间】:2023-02-02 22:59:30
【问题描述】:

我在 elasticsearch 中有几条记录我想按 user_id 对记录进行分组并获取 event_type=1 的最新记录如果最新记录 event_type 值不是 1 那么我们不应该获取该记录。我在 MySQL 查询中做到了。请让我知道如何在 elasticsearch 中做同样的事情?

执行MySQL查询后

SELECT * FROM user_events
     WHERE id IN( SELECT max(id) FROM `user_events` group by user_id ) AND event_type=1;

我在 elasticsearch 中需要相同的输出。

【问题讨论】:

    标签: mysql elasticsearch


    【解决方案1】:
    GET user_events/_search
    {
      "size": 1,
      "query": {
        "term": {
          "event_type": 1
          }
        },
      "sort": [
        {
          "id": {
            "order": "desc"
          }
        }
      ]
    }
    

    说明:这是一个 JSON 格式的 Elasticsearch API 请求。它从“user_events”索引中检索类型为1(查询中由“event_type”:1指定)的最新事件,大小为1(由“size”指定:1)并将结果按降序排列“id”字段(由排序中的“order”:“desc”指定)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2018-11-22
      • 1970-01-01
      相关资源
      最近更新 更多