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

是否可以将现有字段的属性从修改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]}"

}

}

以上是 Elasticsearch-将字段从not_analyzed更改为分析 的全部内容, 来源链接: utcz.com/qa/435071.html

回到顶部