2017-02-15 3 views
0

Не могли бы вы помочь мне преобразовать этот запрос sql в эластичный поисковый запрос?Поиск максимальной даты в эластичном поисковом запросе

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

Пожалуйста, добавьте вашу модель данных (индекс поиска elasticsearch). Без этого вам очень сложно помочь;) – NicolasY

ответ

1

Что делать, если у вас есть запрос, как показано ниже, при условии, что вы делаете в HTTP POST. Вы могли бы просто использовать max скопления ES для того, чтобы получить максимальное значениеи использовать термины в Aggs для того, чтобы получить функцию GROUP BY сделано.

Запрос:

вашдомен: 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 

Надеется, что это помогает!

Смежные вопросы