Elasticsearch имеет это свойство missing
, которое присваивает сегментам с отсутствующим значением какое-то другое значение.
Мне просто интересно, есть ли способ распределить группы по множеству групп или даже просто распределить их по уже существующим группам.
Вариант использования:
Возьмите документы, которые должны индексировать поля местоположения.
{
...
"locations": [{
"city" : "LA",
"suburb": "Beverly Hills"
},
{
"city" : "LA",
"suburb": "Hollywood"
}]
}
Некоторые документы должны индексироваться в одном пригороде и могут доходить до уровня пригорода, в то время как другие охватывают несколько пригородов. Вместо того, чтобы индексировать документы для всех пригородов, просто индексируйте документ до уровня города, и все отсутствующие пригороды пригорода охватывают весь город (то есть все пригороды в городе)
{
...
"locations": [{
"city" : "LA"
}]
}
Включение документа в результаты поиска не является большой проблемой, теперь проблема заключается в подсчете этих документов для всех пригородов. Таким образом, в сущности, если в Лос-Анджелесе есть 2 предместья, а вышеприведенный документ является нашим единственным документом, мы получаем следующие сегменты для агрегации пригородов.
"buckets" : [
{
"key" : "Beverly Hills",
"doc_count" : 1
},
{
"key" : "Hollywood",
"doc_count" : 1
}]