首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ElasticSearch 8.3.3,自定义分析器“未在映射中配置”

ElasticSearch 8.3.3,自定义分析器“未在映射中配置”
EN

Stack Overflow用户
提问于 2022-08-19 21:09:44
回答 2查看 685关注 0票数 0

我试图使用elasticdump将映射加载到弹性搜索。完整的文件如下所示。从文档来看,它“应该有效”。尽管如此,我还是发现了一个错误:

代码语言:javascript
运行
复制
Fri, 19 Aug 2022 21:04:48 GMT | Error Emitted => {"root_cause":[{"type":"mapper_parsing_exception","reason":"Failed to parse mapping: analyzer [my_lc_analyzer] has not been configured in mappings"}],
"type":"mapper_parsing_exception","reason":"Failed to parse mapping: analyzer [my_lc_analyzer] has not been configured in mappings","caused_by":{"type":"illegal_argument_exception","reason":"analyzer [my_lc_analyzer] has not been configured in mappings"}}

完整的映射文件是:

代码语言:javascript
运行
复制
{
    "ngrams": {
        "settings": {
            "analysis": {
                "analyzer": {
                    "my_lc_analyzer": {
                        "type": "custom",
                        "tokenizer": "standard",
                        "filter": [
                            "lowercase",
                            "asciifolding"
                        ]
                    }
                }
            }
        },
        "mappings": {
            "properties": {
                "canvas_id": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "document_id": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "id": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "text": {
                    "type": "text",
                    "analyzer": "my_lc_analyzer"
                }
            }
        }
    }
}

我在web中找到了一些例子,其中settings键在其中有一个额外的级别,index。我也试过了,没有运气。

我想我错过了一些愚蠢的细节,但找不到。提前感谢

EN

回答 2

Stack Overflow用户

发布于 2022-08-19 22:15:27

也许关键的"ngram“就是问题所在。

代码语言:javascript
运行
复制
PUT my-index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_lc_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "asciifolding"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "canvas_id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "document_id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "text": {
        "type": "text",
        "analyzer": "my_lc_analyzer"
      }
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2022-08-21 19:25:58

当我在最初的问题上发表时,它可能被大多数读者忽视了。我正在使用elasticdump来转储和恢复数据库。

我的主要错误是编辑elasticdump生成的转储并添加settings部分来描述分析器。我没有阅读elasticdump文档就这样做了,在我的头脑中,有一个帖子来创建索引和相应的设置是有意义的。

然而,情况并非如此。elasticdump区分了datasettingsanalyzersmappings等。因此,必须执行analyzers类型的导出,这就是导入期间必须提供的内容(具有特定的analyzers类型)。

虽然我认为elasticdump可能有一个更干净的界面,但我解决了我的问题,导出了analyzers,并在mappings信息之前导入了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73422282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档