首页 > 解决方案 > 在现有索引的现有字段中添加带有分析器的多字段

问题描述

我在 elasticsearch(版本:5.1.1)中有一个现有索引,其中包含一些文档索引。索引中的映射(例如硬件)具有如下字段:

"biosSerialNumber" :{
     "type":"keyword"
}

我想用分析器向它添加一个字段,如下所示:“biosSerialNumber”:{“type”:“keyword”,“fields”:{“suffix”:{“type”:“text”,“analyzer”:“abc_analyzer " } } }

“abc_analyzer”分析器已存在于索引设置中。是否允许?我尝试使用 PUT 命令执行此操作,这些命令用于在索引中添加新字段。但这似乎不起作用。

收到此错误:

{ "error": { "root_cause": [ { "type": "mapper_parsing_exception", "reason": "[fields] 的映射定义有不受支持的参数:[analyzer : suffix_match_analyzer]" } ], "type": "mapper_parsing_exception ", "reason": "[fields] 的映射定义有不受支持的参数:[analyzer : suffix_match_analyzer]" }, "status": 400 }

标签: elasticsearchelasticsearch-5

解决方案


正如评论中提到的,错误是因为我试图将分析器添加到“关键字”字段,这是不允许的(因为不分析关键字类型的明显原因)!。这是一个样本试用。

此外,现在在运行 PUT 请求后:

<elshost>/<index-name>/_mapping/<doc-type>

与请求正文:

{
    "properties":{
        "asset":{
            "properties" :{
            "biosSerialNumber":{
                "type":"keyword",
                "fields":{
                  "suffix":{
                    "type":"text",
                    "analyzer":"abc_analyzer"
                  }
                }
              }
            }
        }
    }
}

工作。

我了解,要使该字段中的现有数据生效,需要重新索引文档。


推荐阅读