Ви можете використовувати агрегацію термінів .
{
"size": 0,
"aggs" : {
"langs" : {
"terms" : { "field" : "language", "size" : 500 }
}
}}
Пошук поверне щось на зразок:
{
"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
} ]
}
}
}
size
Параметр в межах агрегації вказує максимальне число членів включити в результаті агрегації. Якщо вам потрібні всі результати, встановіть це значення, яке перевищує кількість унікальних термінів у ваших даних.
fields: [languages]
дасть лише значення даного поля, але зробити їх унікальними, мабуть, простіше зробити в коді. Хоча, можливо, є зручна сукупність, яка може зробити це за вас.