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.