"aggs": {
"2": {
"terms": {
"field": "dns.question.type",
"size": 1000,
"order": {
"_count": "desc"
}
Не понимаю как добавить агрегацию к запросу Java API elasticsearch. Необходимо посчитать количество документов по каждому типу значений dns.question.type и вернуть их. то есть два поля:первое dns.question.type, второе количество документов этого типа.Пытаюсь вначале с помощью функции terms определить количество уникальных значений "dns.question.type" ,необходимо еще получить второе поле которое подсчитывает количество записей каждого типа "dns.question.type" :
SearchResponse response = client.prepareSearch("packetbeat")
.setQuery(QueryBuilders.rangeQuery("@timestamp").gte("now-12d").lt("now-10d"))
.addAggregation(AggregationBuilders.terms("")
И как мне после изъять значения из response например в хэш мап.
Для первого результата
SearchHit[] hits = response.getHits().getHits();
Map<String, Object> result = hits[0].sourceAsMap();
Сам разобрался:
SearchResponse response = client.prepareSearch("packetbeat-2017.03.12") .setQuery(QueryBuilders.rangeQuery("@timestamp").gte("now-12d").lt("now-10d"))
.addAggregation(AggregationBuilders
.terms("type").field("dns.question.type").size(5))
.execute().actionGet();
Map<String, Object> res=new HashMap<String, Object>();
Terms dns_question_types=response.getAggregations().get("type");
for (Terms.Bucket entry : dns_question_types.getBuckets()) {
res.put(entry.getKeyAsString(),entry.getDocCount());
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей