当前位置: 首页 > 知识库问答 >
问题:

在现有索引中的现有字段中添加带有分析器的多字段

路阳华
2023-03-14

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

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

我想用analyzer向其添加一个字段,如下所示:“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}

共有1个答案

郭和硕
2023-03-14

正如注释中提到的,错误是因为我试图将分析器添加到'keyword'字段,这是不允许的(很明显的原因是关键字类型没有被分析)!这是个试吃的样品。

另外,在运行PUT请求后:

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

使用请求正文:

{
    "properties":{
        "asset":{
            "properties" :{
            "biosSerialNumber":{
                "type":"keyword",
                "fields":{
                  "suffix":{
                    "type":"text",
                    "analyzer":"abc_analyzer"
                  }
                }
              }
            }
        }
    }
}
 类似资料:
  • 我想定义一个$Project聚合阶段,在这里我可以指示它添加一个新字段并包括所有现有字段,而不必列出所有现有字段。 在这种情况下,我是否可以使用类似“包括所有字段”的关键字,或者其他方法来避免单独列出每个字段?

  • 问题内容: 我需要为索引中的所有文档添加一个新字段,而无需下拉文档并将其推回备份(这将需要大约一天的时间)。是否可以使用_BULK API实现此目的? 我还研究了update_by_query插件,似乎只需要将它们拉下并推回自己的位置即可。 问题答案: 是的,批量API支持更新,可以使用部分文档或脚本添加新字段。要遍历文档ID,请执行扫描并在将fields参数设置为空数组的情况下滚动。

  • 我还没有为索引创建任何显式设置。谢了。

  • 我有这样的实体结构 我执行条件查询 并在where子句的行上获取错误: 调试了一段时间后,我发现实体管理器的元模型中的父元类将属性子级保留为 AC 列表。 知道如何修复这个错误吗?

  • 我在一个包含3000个文档的核心中有一个Solr索引。 我想基于唯一键PaperID修改整个核心中单个字段的值。 有没有人能为我指点一下...最诚挚的问候

  • 对于如何向已经存在的Lucene索引添加方面,我有点困惑。 我有一个使用Lucene 3.1创建的Lucene索引(创建时没有任何方面)。 我已经查看了Lucene文档中的facet,在那里他们向您展示了如何从头创建一个带有facet的索引,也就是说,您创建一个新的Lucene对象,使用分类工具向其添加facet信息(类别),然后在Lucene索引中编写该文档(使用)这还将向分类法索引添加额外数据