赞
踩
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 中可以正常工作。请重新设计你的映射定义,避免使用多类型结构并将其嵌套在根级别。
添加实例如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。