【问题标题】:Elasticsearch: Date Aggregation Most RecentElasticsearch:最近的日期聚合
【发布时间】:2016-07-16 04:14:59
【问题描述】:

我有一个有效的查询。它根据 Id 聚合数据并根据创建的字段查找 MOST RECENT 对象。我遇到的问题是我想找到 SECOND MOST RECENT 而不是 MOST RECENT。我该怎么办?我一直在查看所有文档,但我能找到的只是范围,这对我没有多大帮助。谢谢你:)

{
    "query":{
      "match": {
         "name": "Robert"
      }
    },
    "aggs": {
        "previous": {
            "terms": {
                "field": "Id",
                "order": {"timeCreated": "desc"}
            },
            "aggs": {
                "timeCreated": {
                    "max": {"field": "created"}
                }

            }
        }
    }
}

【问题讨论】:

  • 最近的文件是什么意思?请详细说明
  • @Richa 我最近的意思是“已售出”字段,我想从当前日期开始最新。我在文档中看到的是一个有限的时间范围,但我想要一个人从当前时间开始搜索的最新时间。
  • @Richa 如果您需要更多说明,请告诉我。任何帮助将不胜感激
  • 您只想获得一份最新的文档。您是这个意思吗?
  • 是的 :) 我想获得最新的并获得它相关的完整字段

标签: date search elasticsearch aggregation


【解决方案1】:

Top_hits 是您正在寻找的。使用这个:

{
"query":{
  "match": {
     "name": "A"
  }
},
"aggs": {
    "previous": {
        "terms": {
            "field": "Id"

        },
         "aggs": {
            "latestRecords": {
              "top_hits": {
                "sort": {
                  "created": {
                    "order": "desc"
                  }
                },
                "size" :2
              }
            }
          }
       }
     }
   }

【讨论】:

  • 这很好用,但如果没有聚合,它只会抓取第二个最近的罗伯特。我想从每个 ID 中找到第二个最近的 Robert。我如何扩展您的解决方案以满足从每个 ID 中查找第二个最近的 Robert 的需要。
  • 这很完美!你太棒了,真的让我很开心:) 我什至很震惊,它返回了整个对象,而不仅仅是 Key 和 Count。这是由于 top_hits 功能吗?无论如何,非常感谢!
  • 乐于助人.. :)
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 2014-08-04
  • 2013-06-06
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多