На основе ваших изображений используйте тип данных keyword
, а не text
.
Согласно ссылке для ключевого слова,
Они обычно используются для фильтрации (найдите все сообщения в блоге, где публикуется статус), для сортировки и агрегации.Поля ключевых слов доступны для поиска только по их точному значению.
Причина, по которой вы наблюдаете эти ошибки, заключается в том, что вы пытаетесь выполнить агрегирующий запрос для text
типа данных.Тип данных text проходит фазу Analysis , где ES принимает значение, разбивает его на токены и сохраняет их в инвертированном индексе,
Я бы предложил вам использовать multi-поля где ваше отображение для country_code
будет таким, как показано ниже:
Отображение:
{
"properties":{
"country_code":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword"
}
}
}
}
}
Запрос агрегации:
{
"query": {
"bool": {
"must": [
{
"match": {
"line_items.product_id": {
"query": "0001112223333"
}
}
}
]
}
},
"from": 0,
"size": 3,
"aggregations": {
"country_code": {
"aggregations": {
"COUNT(*)": {
"value_count": {
"field": "_index"
}
}
},
"terms": {
"field": "country_code.keyword", <----- change this
"size": 200
}
}
}
}
Обратите внимание на поле вышегде я использовал country_code.keyword
в своем запросе агрегации.
Надеюсь, это поможет!