query example elastic aggs aggregations agg elasticsearch elasticsearch-5

elasticsearch - example - bucket_script dentro de la agregación de filtros arroja un error



elasticsearch query aggs (1)

Necesitas un bucket_selector de bucket_selector para eso y el guión ligeramente diferente y colocado en un nivel superior:

{ "size": 0, "aggs": { "groupby_country": { "terms": { "field": "country", "size": 2000 }, "aggs": { "exists__x__filter": { "filter": { "bool": { "filter": [ { "exists": { "field": "x" } } ] } }, "aggs": { "sum": { "sum": { "script": "def val = doc[''x''].value; if(val>0) Math.min(val , 20000)" } } } }, "average_distinct": { "bucket_selector": { "buckets_path": { "count": "exists__x__filter._count" }, "script": "params.count > 0" } } } } } }

Intento filtrar cubos vacíos en el lateral de un bloque de agregación de filtro, y recibo un error de elasticsearch. sin esto, la respuesta es enorme, ya que estoy solicitando una gran cantidad de métricas y agregación anidada (esto es parte de una consulta más grande para simplificar)

GET index/type/_search?ignore_unavailable { "size": 0, "aggs": { "groupby_country": { "terms": { "field": "country", "size": 2000 }, "aggs": { "exists__x__filter": { "filter": { "bool": { "filter": [ { "exists": { "field": "x" } } ] } }, "aggs": { "sum": { "sum": { "script": "def val = doc[''x''].value; if(val>0) Math.min(val , 20000)" } }, "average_distinct": { "bucket_script": { "buckets_path": { "count": "_count" }, "script": "return params.count " } } } } } } } }

respuesta elástica:

{ "error": { "root_cause": [], "type": "reduce_search_phase_exception", "reason": "[reduce] ", "phase": "fetch", "grouped": true, "failed_shards": [], "caused_by": { "type": "class_cast_exception", "reason": "org.elasticsearch.search.aggregations.bucket.filter.InternalFilter cannot be cast to org.elasticsearch.search.aggregations.InternalMultiBucketAggregation" } }, "status": 503 }

Lo que intento hacer es: si para un cubo de país dado, no hay un campo x (por ejemplo, país UK - 2 documentos no tienen el campo "x") no devuelva el cubo de país al cliente .