sub example elastic agregaciones aggs aggregations agg elasticsearch aggregation facet

example - Contar valores distintos utilizando elasticsearch



sub aggregation elasticsearch (3)

Estoy aprendiendo búsqueda elástica y me gustaría contar valores distintos. Hasta ahora puedo contar valores pero no distintos.

Aquí está la muestra de datos:

curl http://localhost:9200/store/item/ -XPOST -d ''{ "RestaurantId": 2, "RestaurantName": "Restaurant Brian", "DateTime": "2013-08-16T15:13:47.4833748+01:00" }'' curl http://localhost:9200/store/item/ -XPOST -d ''{ "RestaurantId": 1, "RestaurantName": "Restaurant Cecil", "DateTime": "2013-08-16T15:13:47.4833748+01:00" }'' curl http://localhost:9200/store/item/ -XPOST -d ''{ "RestaurantId": 1, "RestaurantName": "Restaurant Cecil", "DateTime": "2013-08-16T15:13:47.4833748+01:00" }''

Y lo que probé hasta ahora:

curl -XPOST "http://localhost:9200/store/item/_search" -d ''{ "size": 0, "aggs": { "item": { "terms": { "field": "RestaurantName" } } } }''

Salida:

{ "took": 0, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 3, "max_score": 0.0, "hits": [] }, "aggregations": { "item": { "buckets": [ { "key": "restaurant", "doc_count": 3 }, { "key": "cecil", "doc_count": 2 }, { "key": "brian", "doc_count": 1 } ] } } }

¿Cómo puedo obtener el recuento de cecil como 1 en lugar de 2



Tienes que usar la opción de cardinalidad mencionada por @coder que puedes encontrar en el documento

curl -XGET "http://localhost:9200/store/item/_search" -d'' { "aggs" : { "restaurant_count" : { "cardinality" : { "field" : "RestaurantName", "precision_threshold": 100, "rehash": false } } } }''

Esto funcionó para mí ...


No hay soporte para un conteo diferenciado en ElasticSearch, aunque existe un conteo no determinista. Utilice la agregación de "términos" y los conteos en el resultado. Vea Recuento distinto en la pregunta de búsqueda elástica .