【问题标题】:Elasticsearch : Root mapping definition has unsupported parameterElasticsearch:根映射定义具有不受支持的参数
【发布时间】:2020-12-21 14:17:47
【问题描述】:

我正在创建一种通过 Elasticsearch 和 Kibana 搜索泰语单词的方法。我的映射有问题。

PUT test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "trigrams": {
          "tokenizer": "trigram_tokenizer",
          "filter": [
            "lowercase"
          ]
        }
      },
      "tokenizer": {
        "trigram_tokenizer": {
          "type": "ngram",
          "min_ngram": 3,
          "max_ngram": 3,
          "token_chars": []
        }
      }
    }
  },
  "mappings": {
    "true_name": {
      "properties": {
        "correct": { "type": "text", "analyzer": "trigrams" }
      }
    }
  }
}

这样的错误

{
  "error" : {
    "root_cause" : [
      {
        "type" : "mapper_parsing_exception",
        "reason" : "Root mapping definition has unsupported parameters:  [true_name : {properties={correct={analyzer=trigrams, type=text}}}]"
      }
    ],
    "type" : "mapper_parsing_exception",
    "reason" : "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:  [true_name : {properties={correct={analyzer=trigrams, type=text}}}]",
    "caused_by" : {
      "type" : "mapper_parsing_exception",
      "reason" : "Root mapping definition has unsupported parameters:  [true_name : {properties={correct={analyzer=trigrams, type=text}}}]"
    }
  },
  "status" : 400
}

【问题讨论】:

    标签: elasticsearch mapping


    【解决方案1】:

    不推荐使用映射类型。请参阅此documentation 了解有关删除映射类型的更多信息。

    在 Elasticsearch 6.0.0 或更高版本中创建的索引只能包含 单一映射类型。在 5.x 中创建的具有多个映射的索引 types 将继续像以前一样在 Elasticsearch 6.x 中起作用。类型 将在 Elasticsearch 7.0.0 的 API 中弃用,并且完全 在 8.0.0 中删除。

    {
      "settings": {
        "analysis": {
          "analyzer": {
            "trigrams": {
              "tokenizer": "trigram_tokenizer",
              "filter": [
                "lowercase"
              ]
            }
          },
          "tokenizer": {
            "trigram_tokenizer": {
              "type": "ngram",
              "min_ngram": 3,
              "max_ngram": 3,
              "token_chars": []
            }
          }
        }
      },
      "mappings": {            // note this
        "properties": {
          "correct": {
            "type": "text",
            "analyzer": "trigrams"
          }
        }
      }
    }
    

    如果你的 JSON 文档是这样的:

    {
      "true_name": {
        "correct": "mapping types deprecated"
      }
    }
    

    那么索引映射将是-

    {
      "settings": {
        "analysis": {
          "analyzer": {
            "trigrams": {
              "tokenizer": "trigram_tokenizer",
              "filter": [
                "lowercase"
              ]
            }
          },
          "tokenizer": {
            "trigram_tokenizer": {
              "type": "ngram",
              "min_ngram": 3,
              "max_ngram": 3,
              "token_chars": []
            }
          }
        }
      },
      "mappings": {
        "properties": {              // note this
          "true_name": {
            "properties": {
              "correct": {
                "type": "text",
                "analyzer": "trigrams"
              }
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多