ES7报错:报Root mapping definition has unsupported parameters: [good:{{...}}

报错全文:

{

    "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即可

おすすめ

転載: blog.csdn.net/weixin_31501115/article/details/118157903