报错全文:
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "Root mapping definition has unsupported parameters: [good : {properties={good_descript={type=text, fields={keyword={ignore_above=256, type=keyword}}}, id={type=long, fields={keyword={ignore_above=256, type=keyword}}}, good_sn={type=text, fields={keyword={ignore_above=256, type=keyword}}}, good_name={type=text, fields={keyword={ignore_above=256, type=keyword}}}, good_introduction={type=text, fields={keyword={ignore_above=256, type=keyword}}}}}]"
}
],
"type": "mapper_parsing_exception",
"reason": "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters: [good : {properties={good_descript={type=text, fields={keyword={ignore_above=256, type=keyword}}}, id={type=long, fields={keyword={ignore_above=256, type=keyword}}}, good_sn={type=text, fields={keyword={ignore_above=256, type=keyword}}}, good_name={type=text, fields={keyword={ignore_above=256, type=keyword}}}, good_introduction={type=text, fields={keyword={ignore_above=256, type=keyword}}}}}]",
"caused_by": {
"type": "mapper_parsing_exception",
"reason": "Root mapping definition has unsupported parameters: [good : {properties={good_descript={type=text, fields={keyword={ignore_above=256, type=keyword}}}, id={type=long, fields={keyword={ignore_above=256, type=keyword}}}, good_sn={type=text, fields={keyword={ignore_above=256, type=keyword}}}, good_name={type=text, fields={keyword={ignore_above=256, type=keyword}}}, good_introduction={type=text, fields={keyword={ignore_above=256, type=keyword}}}}}]"
}
},
"status": 400
}
报错原因:
elasticsearch7默认不在支持指定索引类型,默认索引类型是_doc,如果想改变,则配置include_type_name: true 即可(这个没有测试,官方文档说的,无论是否可行,建议不要这么做,因为elasticsearch8后就不在提供该字段)。官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html
简单说:es6 支持type,es7像es6兼容,将所有的数据表type换为_doc; Es8完全取消收据表概念
报错数据:
{
"mappings":{
"good":{
"properties":{
"id":{
"type":"long",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"good_sn":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
}
修改后的正确数据:
{
"mappings":{
"properties":{
"id":{
"type":"long",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"good_sn":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
对比发现:取消了数据表:good
添加数据时也可能出现类似错误:
es6 添加数据链接:http://localhost:9200/shop/good/1
es7 添加数据链接:http://localhost:9200/shop/_doc/1
将es6的数据表名good转换为Es7的_doc即可