ElasticSearch 5.1 Fielddata по умолчанию отключен в текстовом поле [ошибка: попытка использовать агрегацию в поле]
наличие этого поля в моем отображении
"answer": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
Я пытаюсь выполнить эту агрегацию
"aggs": {
"answer": {
"terms": {
"field": "answer"
}
},
но я получаю эту ошибку
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [answer] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
должен ли я изменить свое отображение или я использую неправильную агрегацию ? (только что обновил с 2.x до 5.1)
3 ответов
вам нужно агрегировать на keyword
подполе, например:
"aggs": {
"answer": {
"terms": {
"field": "answer.keyword"
}
},
это сработает.
добавив к ответу @Val, вы также можете установить fielddata
к true во время самого отображения:
"answer": {
"type": "text",
"fielddata": true, <-- add this line
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
в агрегации просто добавьте ключевое слово для ответа.У меня получилось. Для текстовых полей нужно добавить ключевое слово. "поле": "ответьте.ключевое слово"