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" }}
]
}
}
}
это возвращает только открыто, так как они фильтруются таким образом, и я понимаю, но есть ли подход, который получает значения инь / ян или из общего числа, как набор данных круговой диаграммы? Спасибо как всегда.