У меня есть каталог продукции с такими предметами:
{ "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
, тогда результат будет пустым.
Так есть ли какое-то решение для этого?