Настройка: Elasticsearch 6.3
У меня есть индекс, который представляет каталог продукции.
Каждый документ содержит данные об одном продукте.
Одно из полей с именем categories
, представляющее собой массив строк - список соответствующих категорий.
99,9% запросов являются: дайте мне продукты, которые соответствуют категориям A, B и C. Запрос о регистре нечувствителен , поэтому отображение категорий выглядит следующим образом:
"categories": {
"type": "keyword",
"normalizer": "lowercase_normalizer"
}
Для отчетов (0,1% от всех запросов) мне нужно вернуть список всех возможных категорий регистра чувствительный !
Рассмотрим следующие документы:
"_id": "product1",
"_source": {
"categories": [
"WOMEN",
"Footwear"
]
}
"_id": "product2",
"_source": {
"categories": [
"Men",
"Footwear"
]
}
Выполнение следующего запроса:
{
"size": 0,
"aggs": {
"categories": {
"terms": {
"field": "categories",
"size": 100
}
}
}
}
return:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 40453,
"max_score": 0,
"hits": [
]
},
"aggregations": {
"sterms#categories": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 12453,
"buckets": [
{
"key": "men",
"doc_count": 27049
},
{
"key": "women",
"doc_count": 21332
},
.........
]
}
}
}
Есть ли способ вернуть категории с учетом их регистра (как хранится в документах)? Меня интересует ["WOMEN", "Men"]
результат этого запроса.
Вопрос на форуме обсуждения Elasticsearch
Спасибо, Итай