Как агрегировать по массиву текста без анализа в ElasticSearch 6.x - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть каталог продукции с такими предметами:

{ "tags": ["Children", "6 years old", "food"] }
{ "tags": ["Children", "12 years old", "toy"] }
{ "tags": ["Adult", "22 years old", "office"] }

И я хочу получить все теги в моем каталоге с таким поиском:

GET /catalog/items/_search

{
    "size": 0,
    "aggs": {
        "all_tags": {
            "terms": {
                "field": "tags",
                "size": 1000
            }
        }
    }
}

Результат будет:

children, 6, years, old, food ...

Где были проанализированы все тексты в массиве tags.

Ожидаемый ответ должен быть:

children, 6 years old, 12 year old, adult ...

Когда я искал, было несколько решений, но они работают только для более раннего ElasticSearch. Например, установите сопоставление:

{
    "properties": {
        "tags": {
            "type": "text",
            "fields": {
                "keyword": {
                    "type": "keyword",
                    "index": true
                }
            }
        }
    }
}

И агрегировать на tags.keyword, тогда результат будет пустым.

Так есть ли какое-то решение для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...