Я использую Elasticsearch 6.2.4 и пытаюсь проиндексировать данные вasticsearch.
Вот шаблон, который я использую:
{
"order": 0,
"template": "logs-*",
"settings": {
"index": {
"analysis": {
"analyzer": {
"ngram-msg-analyzer": {
"filter": [
"lowercase",
"standard"
],
"min_gram": "3",
"type": "custom",
"max_gram": "3",
"tokenizer": "ngram",
"min": "0",
"max": "2147483647"
}
}
},
"number_of_shards" : "3",
"number_of_replicas" : "1"
}
},
"mappings": {
"_doc": {
"dynamic_templates": [
{
"ts": {
"mapping": {
"format": "epoch_millis",
"type": "date"
},
"match_mapping_type": "string",
"match": "*_ts"
}
},
{
"strings_notanalyzed": {
"unmatch": "*_analyzed",
"mapping": {
"index": true,
"type": "keyword"
},
"match_mapping_type": "string"
}
}
],
"properties": {
"server_ts": {
"format": "strict_date_optional_time||epoch_millis",
"type": "date"
},
"log_message": {
"analyzer": "ngram-msg-analyzer",
"index": true,
"type": "text",
"fields": {
"std": {
"analyzer": "standard",
"type": "text"
},
"raw": {
"ignore_above": 2147483647,
"type": "keyword"
}
}
},
"message": {
"index": true,
"type": "text"
}
}
}
},
"aliases": {}
}
Я установил для параметра ignore_above значение max, чтобы избежать отбрасывания сообщений, но все же я получаю следующую ошибку в журналах индексации Elasticsearch для терминов, превышающих 32766.
не удалось выполнить массовый элемент (индекс) BulkShardRequest [[logs-2018-10-25] [1]], содержащий [1406] запросов
java.lang.IllegalArgumentException: документ содержит по крайней мере один огромный термин в field = "log_message.raw" (чья кодировка UTF8 длиннее максимальной длины 32766), все из которых были пропущены. Пожалуйста, исправьте анализатор, чтобы не выдавать такие термины. Префикс первого необъятного термина: '[82, 101, 113, 117, 101, 115, 116, 32, 112, 114, 111, 99, 101, 115, 115, 105, 110, 103, 32, 101 , 120, 99, 101, 112, 116, 105, 111, 110, 58, 32] ... ', исходное сообщение: длина байт может быть не более 32766; получил 86139
Почему это происходит даже после установки ignore_above на такое высокое значение?