我正在使用Elasticsearch 6.2.4,并且试图在Elasticsearch中建立数据索引。
这是我正在使用的模板:
{
"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选项设置为最大值,以避免丢失消息,但是,对于长度超过32766的术语,我仍然在Elasticsearch索引日志中遇到以下错误。
无法执行包含[1406]个请求的批量项目(索引)BulkShardRequest [[logs-2018-10-25] [1]] 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设置为如此高的值也会发生这种情况?