Как собрать агрегированный префикс / фразу из записей ElasticSearch? - PullRequest
2 голосов
/ 19 апреля 2019

У меня есть поле "Отделы", которое представляет собой список: {"Отделы": ["Служба питания", "Разработка программного обеспечения", "Производство", "Развертывание"]} '

Я хочуагрегировать по элементам «отдела», которые начинаются с «d».т.е. развертывание из всех записей.

Я могу найти записи, которые имеют один элемент с префиксом "d", но не могут агрегировать по ним.Скорее я агрегирую по всем элементам «Отделов» в записях, возвращенных после запроса префикса «d».

{
 "query": {
        "bool": {
            "filter": {
                "match_phrase_prefix": {
                    "Departments": {"query": "a"}
                }
            }
        }
    },
    "aggs" : {
        "all_locations" : {
            "terms" : { "field" : "Departments" }
        }
    }
}

Например, если у меня всего 4 записи, из которых «Развертывание»"присутствует в 1, тогда я хочу:

Развертывание: 1

Но на самом деле я получаю частоту всех элементов в этой записи, где присутствует" Развертывание ".

Развертывание: 1, Питание: 1, Услуги: 1, Программное обеспечение: 1, Разработка: 1, Производство: 1

1 Ответ

1 голос
/ 20 апреля 2019

Это просто. Просто используйте ключевое слово include и добавьте к нему требуемое значение регулярного выражения в Условия запроса , и вы получите то, что хотите.

Я упомянул решение ниже:


POST <your_index_name>/_search
{  
   "query":{  
      "bool":{  
         "filter":{  
            "match_phrase_prefix":{  
               "Departments":{  
                  "query":"a"
               }
            }
         }
      }
   },
   "aggs":{  
      "all_locations":{  
         "terms":{  
            "field":"Departments",
            "include":"D.*"
         }
      }
   }
}

Приведенный выше запрос будет возвращать только сегменты агрегации, начиная с D. Вы можете изменить его на Dep.* для проверки на Deployment

Не стесняйтесь принимать / подтверждать ответ, если вы считаете, что он соответствует вашим требованиям. Запросы приветствуются.

...