Как я могу написать агрегацию терминов Elasticsearch, которая разбивает ведра на весь термин, а не на отдельные токены? Например, я хотел бы агрегировать по штату, но следующее возвращает новый, йорк, джерси и калифорния в качестве отдельных ведер, а не Нью-Йорк и Нью-Джерси и Калифорнию в качестве ведер, как ожидалось:
curl -XPOST "http://localhost:9200/my_index/_search" -d'
{
"aggs" : {
"states" : {
"terms" : {
"field" : "states",
"size": 10
}
}
}
}'
Мой вариант использования подобен описанному здесь https://www.elastic.co/guide/en/elasticsearch/guide/current/aggregations-and-analysis.html только с одним отличием: поле города - это массив в моем случае,
Пример объекта:
{
"states": ["New York", "New Jersey", "California"]
}
Похоже, что предлагаемое решение (отображение поля как not_analyzed) не работает для массивов.
Мое отображение:
{
"properties": {
"states": {
"type":"object",
"fields": {
"raw": {
"type":"object",
"index":"not_analyzed"
}
}
}
}
}
Я попытался заменить "объект" на "строка", но это тоже не работает.