当前位置:   article > 正文

自动补全,DSL,ES,版本问题,mappings_analyzer [analysis-icu] has not been configured in

analyzer [analysis-icu] has not been configured in mappings

DSL实现自动补全查询遇到的小问题

报错一:"reason" : "Failed to parse mapping [_doc]: analyzer [my_analyzer)] has not been configured in mappings",

这个错误信息意味着在映射(mapping)中的字段(field)中使用了未配置的分析器(analyzer)。分析器是用于确定如何将文本数据分割成词汇的工具。

要解决这个问题,你需要检查你的映射文件,并确保在其中正确配置了名为 "my_analyzer" 的分析器。你可以通过在映射中指定分析器来解决这个问题,例如:

```json
{
  "mappings": {
    "_doc": {
      "properties": {
        "my_field": {
          "type": "text",
          "analyzer": "my_analyzer"
        }
      }
    }
  },
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "type": "standard"
        }
      }
    }
  }
}
```

确保在你的映射文件中正确指定了分析器,并使用有效的分析器名称来解决这个问题。

报错二:"reason" : "The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."

这个错误信息表示在映射中定义的类型(type)不能嵌套在一个名为 "_doc" 的类型下,除非将 "include_type_name" 设置为 true。

在 Elasticsearch 7.x 版本中,不再支持多类型(multi-type)索引,而是使用单一类型。因此,不能将映射定义嵌套在类型 "_doc" 下。如果你想继续使用这种嵌套结构,请将 "include_type_name" 设置为 true。

但是,推荐的做法是避免使用多类型,并将映射定义直接嵌套在索引的根级别下。例如:

```json
{
  "mappings": {
    "properties": {
      "my_field": {
        "type": "text"
      }
    }
  }
}
```

这样在最新版本的 Elasticsearch 中可以正常工作。请重新设计你的映射定义,避免使用多类型结构并将其嵌套在根级别。

添加实例如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/610555
推荐阅读
相关标签
  

闽ICP备14008679号