当前位置: 首页 > 面试题库 >

Elasticsearch-将字段从not_analyzed更改为分析

羊舌高峰
2023-03-14
问题内容

是否可以将现有字段的属性从修改not_analyzedanalyzed

如果没有,我该怎么办才能将我所有的文件保存起来?

我无法删除映射(因为所有文档都将消失),并且需要该旧字段进行分析。


问题答案:

不能修改现有字段,但是,您可以创建其他字段或子字段添加到您的not_analyzed领域。

我要使用后一种解决方案。因此,首先,将一个新的子字段添加到您现有的字段中,如下所示:

curl -XPUT localhost:9200/index/_mapping/type -d '{
    "properties": {
        "your_field": {
            "type": "string",
            "index": "not_analyzed",
            "fields": {
                "sub": {
                    "type": "string"
                }
            }
        }
    }
}'

上面,我们已经添加了子场称为your_field.sub(被分析)现有的your_field(这是not_analyzed

接下来,我们需要填充该新子字段。如果您运行的是最新的ES 2.3,则可以使用功能强大的Reindex
API

curl -XPUT localhost:9200/_reindex -d '{
  "source": {
    "index": "index"
  },
  "dest": {
    "index": "index"
  },
  "script": {
    "inline": "ctx._source.your_field = ctx._source.your_field"
  }
}'

否则,您可以简单地使用以下Logstash配置,该配置将为您的数据重新索引以便填充新的子字段

input {
  elasticsearch {
   hosts => "localhost:9200"
   index => "index"
   docinfo => true
  }
}
filter {
 mutate {
  remove_field => [ "@version", "@timestamp" ]
 }
}
output {
 elasticsearch {
   hosts => ["localhost:9200"]
   manage_template => false
   index => "%{[@metadata][_index]}"
   document_type => "%{[@metadata][_type]}"
   document_id => "%{[@metadata][_id]}"
 }
}


 类似资料:
  • 问题内容: 我的映射定义中包含以下字段: 当我索引用的有价票证该值被分成3个术语:,,。 我究竟做错了什么? 我创建了以下索引: 然后我索引以下文档: 然后,我将插件https://github.com/jprante/elasticsearch-index- termlist 与以下API结合使用: 这将给我以下响应: `` 问题答案: 通过运行以下命令验证映射是否已真正设置: 创建索引的命令似

  • 问题内容: 假设我有一个映射中指定的字符串字段。如果我随后添加到映射,ElasticSearch会重复存储吗?我对字段的了解是,它们不是通过分析器运行的,索引 为 ,但是客户端可以对其进行匹配。因此,如果一个字段既是和,则可能导致ElasticSearch保留该字符串的两个副本。 我的问题: 如果将字符串字段同时存储为和,是否将重复存储该字符串? 我希望这很清楚。谢谢! 问题答案: 您正在混合使用

  • 问题内容: 我正在尝试将结果分组,以便将它们按类别分组。 上面的代码创建了聚合,但是我遇到了一个问题,其中 带有连字符的字符串 被分隔并放入了自己的“ Bucket”中。 从我已阅读的内容中,我需要更改映射设置,以便不分析类别,但是我不确定如何执行此操作。写入Elasticsearch或阅读时完成了吗?究竟如何设置? 问题答案: 要使用Java API应用Elasticsearch映射, 步骤1)

  • 我有以下信息: 我希望将权重和override_weight(可选字段)的类型更改为,因此我所做的是流动: 我的问题是,假设我有以前的protobuff消息编译器为旧消息编译的旧消息,我能将它们解析为新消息吗?文件对此非常模糊: “将可选字段移入或移出其中一个:消息序列化和分析后,您可能会丢失一些信息(某些字段将被清除)。但是,您可以安全地将单个字段移入新字段中,并且如果已知只设置了一个字段,则可

  • 问题内容: 我有一个类似以下设置和映射的索引; 我正在努力实现现场通配符搜索的实现。我的示例数据如下: 当我执行以下查询时; 它返回,。我认为,它仍然标记数据。它只能返回。 您能帮上忙吗? 提前致谢 问题答案: 我的解决方案历险记 如您在我的问题中所见,我已经开始审理案件。每当我更改了一部分设置后,一部分便开始工作,而另一部分则停止工作。让我给出我的解决方案历史记录: 1.) 我已将数据索引为默认

  • 问题内容: 在我的系统中,数据插入始终是通过logstash通过csv文件完成的。我从未预定义映射。但每当我输入它总是被一个字符串是,其结果就像一个条目被分为,,,。无论如何,我是否可以更改elasticsearch的默认/动态映射,以便所有字符串(无论索引如何,无论类型如何)都被视为?还是有一种在文件中设置它的方法?说我的档案看起来像 我希望所有的字符串都是这样,我也不介意将其作为所有将来的数据