首页 > 解决方案 > Elasticsearch synomys 错误 - mapper_parsing_exception

问题描述

我正在尝试运行下面的代码,但出现此错误。请帮我修复它。谢谢:

PUT synonyms_hotel
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "synonym_analyzer": {
            "tokenizer": "standard",
            "filter": [
              "lowercase",
              "synonym_graph"
            ]
          }
        },
        "filter": {
          "synonym_graph": {
            "type": "synonym_graph",
            "synonyms": [
              "courtyard, marriot"
            ]
          }
        }
      }
    }
  },
  "mappings": {
    "hotel": {
      "properties": {
        "name": {
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword"
            }
          }
        },
        "city": {
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword"
            }
          }
        },
        "name_suggest": {
          "type": "completion",
          "analyzer": "autocomplete",
          "search_analyzer": "standard"
        }
      }
    }
  }
}

错误:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "mapper_parsing_exception",
        "reason" : "Root mapping definition has unsupported parameters:  [hotel : {properties={name_suggest={search_analyzer=standard, analyzer=autocomplete, type=completion}, city={type=text, fields={raw={type=keyword}}}, name={type=text, fields={raw={type=keyword}}}}}]"
      }
    ],
    "type" : "mapper_parsing_exception",
    "reason" : "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:  [hotel : {properties={name_suggest={search_analyzer=standard, analyzer=autocomplete, type=completion}, city={type=text, fields={raw={type=keyword}}}, name={type=text, fields={raw={type=keyword}}}}}]",
    "caused_by" : {
      "type" : "mapper_parsing_exception",
      "reason" : "Root mapping definition has unsupported parameters:  [hotel : {properties={name_suggest={search_analyzer=standard, analyzer=autocomplete, type=completion}, city={type=text, fields={raw={type=keyword}}}, name={type=text, fields={raw={type=keyword}}}}}]"
    }
  },
  "status" : 400
}

标签: elasticsearch

解决方案


您可能正在使用 Elasticsearch 7+ 并且映射类型已被弃用,因此您只需删除hotel级别:

PUT synonyms_hotel
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "synonym_analyzer": {
            "tokenizer": "standard",
            "filter": [
              "lowercase",
              "synonym_graph"
            ]
          }
        },
        "filter": {
          "synonym_graph": {
            "type": "synonym_graph",
            "synonyms": [
              "courtyard, marriot"
            ]
          }
        }
      }
    }
  },
  "mappings": {
      "properties": {                     <--- remove hotel here
        "name": {
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword"
            }
          }
        },
        "city": {
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword"
            }
          }
        },
        "name_suggest": {
          "type": "completion",
          "analyzer": "autocomplete",
          "search_analyzer": "standard"
        }
      }
    }
}

推荐阅读