ES Query DSL: может ли вернуть счет как для истинного, так и для ложного типа запроса?

Есть ли способ достичь в запросе типа Elasticsearch DSL, что-то похожее на инструкцию SQL, где я могу вернуть счетчики типа true / false для контрастных условий:

SELECT
  Case When [isOpen] = 'yes' then 'Open' else 'Closed' end AS State,
  Count(*) AS Total
FROM tbl
Where [location] = 'local'

Вернул бы что-то вроде

State   |    Total
===================
  Open         54
  Closed       23 

Я не нашел способ достичь этого в Elasticsearch dsl, кроме выполнения двух отдельных запросов bool? Я предполагаю, что это как-то связано со счетчиком значений aggs, но на данный момент я могу получить обратно только совпадающее Да в этом типе запроса

{
  "aggs":
     {
        "total": {
             "value_count": {
                  "field": "_id"
              }
         }
     },
     "query": {
        "bool": {
           "filter":[
              { "term": {"location":"local" }},
              { "term": { "is_open":"yes" }}
           ]
        }
     }
}

это возвращает только открыто, так как они фильтруются таким образом, и я понимаю, но есть ли подход, который получает значения инь / ян или из общего числа, как набор данных круговой диаграммы? Спасибо как всегда.

0 ответов

Другие вопросы по тегам