¿Cómo acceder a las agregaciones resultar con Elasticsearch Java API en la búsqueda de búsqueda?
-
21-12-2019 - |
Pregunta
¿Hay alguna manera de recuperar los cubos de las agregaciones en una respuesta de búsqueda, con la API de Java?
{
"took" : 185,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 200,
"max_score" : 1.0,
"hits" : [...]
},
"aggregations" : {
"agg1" : {
"buckets" : [...]
},
"agg2" : {
"buckets" : [...]
}
}
}
Actualmente, es posible obtener las agregaciones, pero no puedo descubrir cómo obtener los cubos.
La versión actual 1.0 de ELASTICSEARCH (v1.0.0.BETA2) sigue siendo una versión beta, y tal vez se debe agregar esta función, pero no encontró información en ese punto.
Solución
Mirando el Es fuente en GitHub Veo lo siguiente en sus pruebas:
SearchResponse response = client().prepareSearch("idx").setTypes("type")
.setQuery(matchAllQuery())
.addAggregation(terms("keys").field("key").size(3).order(Terms.Order.count(false)))
.execute().actionGet();
Terms terms = response.getAggregations().get("keys");
Collection<Terms.Bucket> buckets = terms.getBuckets();
assertThat(buckets.size(), equalTo(3));
Otros consejos
Si alguien se pregunta acerca de acceder a los documentos reales, la cuenta de estos cubos después del código podría ayudarlo.
Terms terms = response.getAggregations().get("agg1");
Collection<Terms.Bucket> buckets = terms.getBuckets();
for (Bucket bucket : buckets) {
System.out.println(bucket.getKeyAsText() +" ("+bucket.getDocCount()+")");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow