elasticsearch - 在现有索引的现有字段中添加带有分析器的多字段
问题描述
我在 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 }
解决方案
正如评论中提到的,错误是因为我试图将分析器添加到“关键字”字段,这是不允许的(因为不分析关键字类型的明显原因)!。这是一个样本试用。
此外,现在在运行 PUT 请求后:
<elshost>/<index-name>/_mapping/<doc-type>
与请求正文:
{
"properties":{
"asset":{
"properties" :{
"biosSerialNumber":{
"type":"keyword",
"fields":{
"suffix":{
"type":"text",
"analyzer":"abc_analyzer"
}
}
}
}
}
}
}
工作。
我了解,要使该字段中的现有数据生效,需要重新索引文档。
推荐阅读
- javascript - DIV 不显示
- php - 使用 octobercms 中的数据表作为服务器端方式
- c - 如何解决 vfmadd213ps 的“非法指令”?
- android - 如何以编程方式更改蓝牙名称?
- javascript - Object.create 中的对象属性值是常量吗?
- openshift - 无法打开我在部署/构建后创建的页面
- pandas - 如何在 Pandas 中删除具有不同标签和相同行值的多列
- python - 如何让excel再次写入页面顶部?
- c# - 如何将 appsetting.json 配置文件中的 IConfiguration 注入到他的代码中?
- javascript - window.open 作品;如果我刷新孩子,window.opener 会清除孩子