values query example elastic aggs aggregations agg elasticsearch

query - ElasticSearch-Return Unique Values



term aggs elasticsearch (2)

Elasticsearch 1.1+ tiene la agregación de cardinalidad que le dará un recuento único

Tenga en cuenta que en realidad es una aproximación y que la precisión puede disminuir con conjuntos de datos de alta cardinalidad, pero generalmente es bastante precisa en mis pruebas.

También puede ajustar la precisión con el parámetro precision_threshold . La compensación, o curso, es el uso de la memoria.

Este gráfico de los documentos muestra cómo un mayor precision_threshold conduce a resultados mucho más precisos.

Cómo obtendría los valores de todos los languages de los registros y los haría únicos.

Archivos

PUT items/1 { "language" : 10 } PUT items/2 { "language" : 11 } PUT items/3 { "language" : 10 }

Consulta

GET items/_search { ... } # => Expected Response [10, 11]

Cualquier ayuda sería genial.


Puede usar los términos de agregación .

{ "size": 0, "aggs" : { "langs" : { "terms" : { "field" : "language", "size" : 500 } } }}

Una búsqueda devolverá algo así como:

{ "took" : 16, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "hits" : { "total" : 1000000, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "langs" : { "buckets" : [ { "key" : "10", "doc_count" : 244812 }, { "key" : "11", "doc_count" : 136794 }, { "key" : "12", "doc_count" : 32312 } ] } } }

El parámetro de size dentro de la agregación especifica el número máximo de términos para incluir en el resultado de agregación. Si necesita todos los resultados, establezca esto en un valor que sea mayor que el número de términos únicos en sus datos.