elasticsearch mapper_parsing_exception Root mapping definition has unsupported parameters

和自甴很熟 提交于 2021-01-28 17:57:33

问题


I'm having the following issue with elasticsearch 7 when trying creating a template.

When I'm trying to copy template from elasticsearch 6 to 7 and some of the fields I have removed as per the elasticsearch 7 .e

{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "Root mapping definition has unsupported parameters:  [events : {properties={msg={fields={raw={type=keyword}}}, requestId={type=keyword}, logger={type=keyword}, host={type=keyword}, jwtOwner={type=keyword}, requestOriginator={type=keyword}, tag={analyzer=firsttoken, fields={disambiguator={analyzer=keyword, type=text}}}, jwtAuthenticatedUser={type=keyword}, thread={type=keyword}, requestChainOriginator={type=keyword}, revision={type=keyword}}}]"
      }
    ],
    "type": "mapper_parsing_exception",
    "reason": "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:  [events : {properties={msg={fields={raw={type=keyword}}}, requestId={type=keyword}, logger={type=keyword}, host={type=keyword}, jwtOwner={type=keyword}, requestOriginator={type=keyword}, tag={analyzer=firsttoken, fields={disambiguator={analyzer=keyword, type=text}}}, jwtAuthenticatedUser={type=keyword}, thread={type=keyword}, requestChainOriginator={type=keyword}, revision={type=keyword}}}]",
    "caused_by": {
      "type": "mapper_parsing_exception",
      "reason": "Root mapping definition has unsupported parameters:  [events : {properties={msg={fields={raw={type=keyword}}}, requestId={type=keyword}, logger={type=keyword}, host={type=keyword}, jwtOwner={type=keyword}, requestOriginator={type=keyword}, tag={analyzer=firsttoken, fields={disambiguator={analyzer=keyword, type=text}}}, jwtAuthenticatedUser={type=keyword}, thread={type=keyword}, requestChainOriginator={type=keyword}, revision={type=keyword}}}]"
    }
  },
  "status": 400
}

Mapping template: The following is the template I'm trying to post.

POST _template/logstash
{
    "order" : 0,
    "index_patterns" : [
      "logstash*"
    ],
    "settings" : {
      "index" : {
        "analysis" : {
          "filter" : {
            "firsttoken" : {
              "type" : "pattern_capture",
              "preserve_original" : "false",
              "patterns" : [
                """^([^\.]*)\.?.*$"""
              ]
            },
            "secondtoken" : {
              "type" : "pattern_capture",
              "preserve_original" : "false",
              "patterns" : [
                """^[^\.]*\.([^\.]*)\.?.*$"""
              ]
            },
            "thirdtoken" : {
              "type" : "pattern_capture",
              "preserve_original" : "false",
              "patterns" : [
                """^[^\.]*\.[^\.]*\.([^\.]*)\.?.*$"""
              ]
            }
          },
          "analyzer" : {
            "firsttoken" : {
              "filter" : [
                "firsttoken"
              ],
              "tokenizer" : "keyword"
            },
            "secondtoken" : {
              "filter" : [
                "secondtoken"
              ],
              "tokenizer" : "keyword"
            },
            "thirdtoken" : {
              "filter" : [
                "thirdtoken"
              ],
              "tokenizer" : "keyword"
            }
          }
        },
        "mapper" : {

        }
      }
    },
    "mappings" : {
      "events" : {
        "properties" : {
          "msg" : {
            "type" : "text",
            "fields" : {
              "raw" : {
                "type" : "keyword"
              }
            }
          },
          "requestId" : {
            "type" : "keyword"
          },
          "logger" : {
            "type" : "keyword"
          },
          "host" : {
            "type" : "keyword"
          },
          "jwtOwner" : {
            "type" : "keyword"
          },
          "requestOriginator" : {
            "type" : "keyword"
          },
          "tag" : {
            "analyzer" : "firsttoken",
            "fields" : {
              "disambiguator" : {
                "analyzer" : "keyword",
                "type" : "text"
              }
            }
          },
          "jwtAuthenticatedUser" : {
            "type" : "keyword"
          },
          "thread" : {
            "type" : "keyword"
          },
          "requestChainOriginator" : {
            "type" : "keyword"
          },
          "revision" : {
            "type" : "keyword"
          }
        }
      }
    },
    "aliases" : { }
  }

Please help me resolve the issue. Thanks in advance.


回答1:


There are two issues. One issue is the one mentioned by @OpsterESNinjaKamal

But it still won't work as the tag field has no type.

Here is the template that will work:

PUT _template/logstash
{
  "order": 0,
  "index_patterns": [
    "logstash*"
  ],
  "settings": {
    "index": {
      "analysis": {
        "filter": {
          "firsttoken": {
            "type": "pattern_capture",
            "preserve_original": "false",
            "patterns": [
              "^([^\\.]*)\\.?.*$"
            ]
          },
          "secondtoken": {
            "type": "pattern_capture",
            "preserve_original": "false",
            "patterns": [
              "^[^\\.]*\\.([^\\.]*)\\.?.*$"
            ]
          },
          "thirdtoken": {
            "type": "pattern_capture",
            "preserve_original": "false",
            "patterns": [
              "^[^\\.]*\\.[^\\.]*\\.([^\\.]*)\\.?.*$"
            ]
          }
        },
        "analyzer": {
          "firsttoken": {
            "filter": [
              "firsttoken"
            ],
            "tokenizer": "keyword"
          },
          "secondtoken": {
            "filter": [
              "secondtoken"
            ],
            "tokenizer": "keyword"
          },
          "thirdtoken": {
            "filter": [
              "thirdtoken"
            ],
            "tokenizer": "keyword"
          }
        }
      },
      "mapper": {}
    }
  },
  "mappings": {
    "properties": {
      "msg": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "requestId": {
        "type": "keyword"
      },
      "logger": {
        "type": "keyword"
      },
      "host": {
        "type": "keyword"
      },
      "jwtOwner": {
        "type": "keyword"
      },
      "requestOriginator": {
        "type": "keyword"
      },
      "tag": {
        "type": "text",                    <--- add type here
        "analyzer": "firsttoken",
        "fields": {
          "disambiguator": {
            "analyzer": "keyword",
            "type": "text"
          }
        }
      },
      "jwtAuthenticatedUser": {
        "type": "keyword"
      },
      "thread": {
        "type": "keyword"
      },
      "requestChainOriginator": {
        "type": "keyword"
      },
      "revision": {
        "type": "keyword"
      }
    }
  },
  "aliases": {}
}



回答2:


Notice your mappings. ES post version 7.0, doesn't support type i.e. events in this case and that is has been deprecated.

Post version 7.0, you would need to create a separate index for every type you've had in the index prior to version 7.0.

This link should help you as how you can migrate from version 6.x to 7.x

Basically your mappings section would be as follows:

{
   "mappings":{
      "properties":{                     <---- Notice there is no `events` before `properties` as mentioned in your question
         "msg":{
            "type":"text",
            "fields":{
               "raw":{
                  "type":"keyword"
               }
            }
         },
         "requestId":{
            "type":"keyword"
         },
         "logger":{
            "type":"keyword"
         },
         "host":{
            "type":"keyword"
         },
         "jwtOwner":{
            "type":"keyword"
         },
         "requestOriginator":{
            "type":"keyword"
         },
         "tag":{
            "analyzer":"firsttoken",
            "fields":{
               "disambiguator":{
                  "analyzer":"keyword",
                  "type":"text"
               }
            }
         },
         "jwtAuthenticatedUser":{
            "type":"keyword"
         },
         "thread":{
            "type":"keyword"
         },
         "requestChainOriginator":{
            "type":"keyword"
         },
         "revision":{
            "type":"keyword"
         }
      }
   }
}



回答3:


Sorry, Vol and Opster I missed adding events template. I deleted the event because it is not accepting. The following is the template for events.

PUT  _template/logstash
{
    "order" : 0,
    "index_patterns" : [
      "logstash*"
    ],
    "settings" : {
      "index" : {
        "analysis" : {
          "filter" : {
            "firsttoken" : {
              "type" : "pattern_capture",
              "preserve_original" : "false",
              "patterns" : [
                """^([^\.]*)\.?.*$"""
              ]
            },
            "secondtoken" : {
              "type" : "pattern_capture",
              "preserve_original" : "false",
              "patterns" : [
                """^[^\.]*\.([^\.]*)\.?.*$"""
              ]
            },
            "thirdtoken" : {
              "type" : "pattern_capture",
              "preserve_original" : "false",
              "patterns" : [
                """^[^\.]*\.[^\.]*\.([^\.]*)\.?.*$"""
              ]
            }
          },
          "analyzer" : {
            "firsttoken" : {
              "filter" : [
                "firsttoken"
              ],
              "tokenizer" : "keyword"
            },
            "secondtoken" : {
              "filter" : [
                "secondtoken"
              ],
              "tokenizer" : "keyword"
            },
            "thirdtoken" : {
              "filter" : [
                "thirdtoken"
              ],
              "tokenizer" : "keyword"
            }
          }
        },
        "mapper" : {

        }
      }
    },
    "mappings" : {
      "events" : {
        "properties" : {
          "msg" : {
            "type" : "text",
            "fields" : {
              "raw" : {
                "type" : "keyword"
              }
            }
          },
          "requestId" : {
            "type" : "keyword"
          },
          "logger" : {
            "type" : "keyword"
          },
          "host" : {
            "type" : "keyword"
          },
          "jwtOwner" : {
            "type" : "keyword"
          },
          "requestOriginator" : {
            "type" : "keyword"
          },
          "tag" : {
            "analyzer" : "firsttoken",
            "fields" : {
              "disambiguator" : {
                "analyzer" : "keyword",
                "type" : "text"
              }
            },
            "type" : "text"
          },
          "jwtAuthenticatedUser" : {
            "type" : "keyword"
          },
          "thread" : {
            "type" : "keyword"
          },
          "requestChainOriginator" : {
            "type" : "keyword"
          },
          "revision" : {
            "type" : "keyword"
          }
        }
      }
    },
    "aliases" : { }
  }


来源:https://stackoverflow.com/questions/60660873/elasticsearch-mapper-parsing-exception-root-mapping-definition-has-unsupported-p

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!