在弹性搜索查询中查找最大日期

时间:2017-02-15 14:38:13

标签: elasticsearch

你能帮我把这个sql查询转换为弹性搜索查询吗?

SELECT group,MAX(date) as max_date
FROM table
WHERE checks>0
GROUP BY group

1 个答案:

答案 0 :(得分:1)

假设您正在执行HTTP POST,如果您的查询如下所示,该怎么办?您可以简单地使用ES的max聚合来获取 max 值,并在 aggs 中使用 terms 以获取GROUP BY功能已完成。

请求

yourhost:9200 / your_index / _search

请求正文:

{
   "query": {
       "query_string": {
           "query": "checks > 0"  <-- check whether this works, if not use the range query 
       }
   },
   "aggs": {
      "groupby_group": {
          "terms": {
              "field": "group"
           },
   "aggs": {
      "maximum": {
          "max": {
              "script": "doc['date'].value"
          }
       }
    }
  }
 }
}

对于checks > 0,您可以使用range查询以及查询,这可能如下所示:

"range" : {
        "checks" : {
             "gte" : 0
         }
 }

This可以帮助您执行聚合。但在尝试查询之前,请确保您已从 elasticsearch.yml 启用脚本

script.inline: on

希望这有帮助!