Table of Contents
创建索引时报错
curl -X PUT "localhost:9200/ithothub.com?pretty" -H 'Content-Type: application/json' -d'
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
},
"mappings" : {
"properties": {
"@timestamp": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"message": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
'
{
"error" : {
"root_cause" : [
{
"type" : "mapper_parsing_exception",
"reason" : "No handler for type [string] declared on field [message]"
}
],
"type" : "mapper_parsing_exception",
"reason" : "Failed to parse mapping [_doc]: No handler for type [string] declared on field [message]",
"caused_by" : {
"type" : "mapper_parsing_exception",
"reason" : "No handler for type [string] declared on field [message]"
}
},
"status" : 400
}
原因分析
No handler for type [string] declared on field [message]
之前在老集群可以,估计是Elasticsearch新版本特性,果不其然,Elasticsearch从5.X就引入了text和keyword,其中keyword适用于不分词字段,搜索时只能完全匹配,这时string还保留着。
到了6.X就彻底移除string了。另外,”index”的值只能是boolean变量了。
解决方法
"message": { "type": "text", "index": false }
"message": { "type": "text", "index": false }
curl -X PUT "localhost:9200/ithothub.com?pretty" -H 'Content-Type: application/json' -d'
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
},
"mappings" : {
"properties": {
"@timestamp": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"message": {
"type": "text",
"index": false
}
}
}
}
'
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "ithothub.com"
}
IT技术资讯



评论前必须登录!
注册