Puede usar los términos agregación .
{
"size": 0,
"aggs" : {
"langs" : {
"terms" : { "field" : "language", "size" : 500 }
}
}}
Una búsqueda devolverá algo 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 size
parámetro dentro de la agregación especifica el número máximo de términos para incluir en el resultado de la agregación. Si necesita todos los resultados, configúrelo en un valor que sea mayor que la cantidad de términos únicos en sus datos.
fields: [languages]
dará solo los valores del campo dado, pero hacerlos únicos es probablemente más fácil de hacer en código. Aunque puede haber una agregación útil que puede hacerlo por usted.