#filter #elasticsearch-7 #elasticsearch-analyzers
Вопрос:
Вместо того, чтобы ограничивать количество токенов числом, я хочу использовать все токены, выведенные из анализа. Официальная документация.
Я обновил настройки следующим образом
{
"index": {
"analysis": {
"analyzer": {
"clean_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"consume_tokens"
]
}
},
"filter": {
"consume_tokens": {
"type": "limit"
"consume_all_tokens": true
}
}
}
}
Если я не предоставлю эти настройки, я получу сообщение об ошибке
The number of tokens produced by calling _analyze has exceeded the allowed maximum of [10000]. This limit can be set by changing the [index.analyze.max_token_count] index level setting.
и если я предоставлю этот параметр, то выводимый токен будет равен только 1. Я ошибаюсь в понимании официального заявления doc
If true, the limit filter exhausts the token stream, even if the max_token_count has already been reached.
Я интерпретирую так, как все токены будут прочитаны, и никакие ограничения не будут применены.
Наверное, мне нужно обновить type
? Я пытался удалить его, но это не вариант.
Для тестирования я использую стандартный API из документов
GET document_content_index/_analyze
{
"tokenizer": "standard",
"filter": [
{
"consume_tokens"
}
],
"text": "quick fox jumps over lazy dog"
}
Редактировать:
Обновил фильтр до
"filter": {
"consume_tokens": {
"type": "limit"
"max_token_count": 10003
}
}
Даже это ограничение не соблюдается, и возникает то же исключение. Только когда я меняю число на 10 тысяч, это работает.