terms sub multiple fields example aggs aggregations agg filter elasticsearch aggregation

filter - sub - terms agg elasticsearch



Restringir la agregaciĆ³n a los resultados del filtro (2)

¿Has intentado utilizar la consulta filtrada?

{ "query": { "filtered": { "query": { "match_all": {} }, "filter": { "term": { "field1": "value" } } } }, "aggregations": { "field2": { "terms": { "field": "field2" } } } }

Dado un conjunto de documentos que tienen un valor dado en un campo, quiero saber cuántos documentos hay que tienen cada valor para un segundo campo.

He intentado hacer eso con una agregación de términos con la siguiente consulta:

{ "size": 0, "filter": { "term": { "field1": "value" } }, "aggregations": { "field2" : { "terms" : { "field" : "field2" } } } }

pero los conteos devueltos muestran el número de documentos con cada valor para el segundo campo en todo el índice , y no están restringidos a aquellos documentos con un valor dado para el primer campo.

¿Qué estoy haciendo mal?


Aquí hay una comparación: https://www.elastic.co/guide/en/elasticsearch/guide/current/_post_filter.html

En resumen, su filtro de nivel superior está actuando como un post_filter en el enlace. Para filtrar, luego calcular el agregado, debe utilizar una consulta.

Si le preocupa el impacto en el rendimiento debido al cálculo de puntajes en las consultas, puede consultar las consultas de puntaje constante que básicamente son una consulta de filtro-envoltura.