2017-02-08 2 views
0

Я ищу, чтобы добавить функцию к существующему запросу. В основном, я запускаю запрос, который возвращает 1000 документов. Все эти документы имеют одинаковую структуру, но только значения определенных полей различаются. Я бы хотел, чтобы не только получить полный список в результате, но и подсчитать, сколько результатов имеет поле X со значением Y, сколько результатов имеет одно и то же поле X со значением Z и т. Д.Вложенные запросы счетчика

В основном получить все результаты + 4 или 5 "counts", которые будут действовать как SQL "group by", в некотором роде. Целью этого является возможность полнотекстового поиска по всем клиентам в нашей базе данных (без фильтрации), показывая, сколько из них - активные клиенты, прошлые клиенты, активные перспективы и т. Д.

Любой способ сделать это без выполнения дополнительных/отдельных запросов?

EDIT с ответом:

Скопления это путь. Вот как я это сделал, так просто, что я ожидал гораздо более сложной работы!

{ 
"query": { 
    "term": { 
     "_type":"client" 
    } 
}, 
"aggregations" : { 
    "agg1" : { 
     "terms" : { 
      "field" : "listType.typeRef.keyword" 
     } 
    } 
} 

}

Обратите внимание, что даже в списке терминов и не одно поле, это просто, как легко это было!

ответ

1

Я считаю, что вы ищете aggregation query.

Документация должна быть достаточно ясной, но если вы будете бороться, пожалуйста, сообщите нам свой запрос ES, и мы поможем вам оттуда.

+0

Действительно, это было довольно просто, когда я обошел первые страницы текста. Я обновлю свой первоначальный вопрос, чтобы помочь людям, которые могут столкнуться с проблемами в будущем. Благодаря ! –