Доброго времени суток.
При использовании фонетического анализатора (см transliteration
в конфиге ниже), во время записи (индексации) документов в Elasticsearch, используя Bulk API (пачка порядка 100 документов за один запрос), в ответе API выстреливает исключение вида:
Type: "illegal_state_exception",
Reason: "Too many cached tokens (> 100)"
Причем данное исключение появилось не сразу, поначалу данные индексировались корректно.
Если пересоздать индекс без фонетического анализатора - исключения пропадают.
Гугление данного исключения не дало никаких результатов, нигде нет и упоминания.
Фонетический анализатор используется в нескольких полях документа, маппинг приведен ниже.
Как решить данную проблему?
Версия ES: 7.4.1
Конфиг индекса:
{
"settings": {
"number_of_shards": 3,
"index.refresh_interval": "30s",
"analysis": {
"filter": {
"transliteration_english": {
"type": "phonetic",
"encoder": "beider_morse",
"rule_type": "approx",
"name_type": "generic",
"languageset": [
"english"
]
},
"transliteration_cyrillic": {
"type": "phonetic",
"encoder": "beider_morse",
"rule_type": "approx",
"name_type": "generic",
"languageset": [
"cyrillic"
]
}
},
"analyzer": {
"transliteration": {
"tokenizer": "standard",
"filter": [
"lowercase",
"transliteration_english",
"transliteration_cyrillic"
]
}
}
}
},
"mappings": {
"properties": {
"field1": {
"type": "search_as_you_type",
"analyzer": "transliteration",
"max_shingle_size": 3
},
"field2": {
"type": "text",
"analyzer": "russian",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
},
"translit": {
"type": "search_as_you_type",
"analyzer": "transliteration",
"max_shingle_size": 2
}
}
},
"field3": {
"type": "keyword"
},
"field4": {
"type": "keyword"
},
"field5": {
"type": "keyword"
},
"field6": {
"type": "integer"
},
"field7": {
"type": "integer"
},
"field8": {
"type": "search_as_you_type",
"analyzer": "russian",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"field9": {
"properties": {
"subfield1": {
"type": "keyword"
},
"subfield2": {
"type": "search_as_you_type",
"max_shingle_size": 2,
"analyzer": "russian",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"field10": {
"type": "boolean"
},
"field11": {
"type": "boolean"
}
}
}
}