在弹性搜索中更改字段类型2.3.4

时间:2016-08-22 08:49:09

标签: elasticsearch

我正在使用弹性搜索构建一个项目,用于索引和查询大数据。 在我的字段上创建的自动映射器为double,我想将其更改为int,我当然可以手动执行但我一直尝试使用put命令对索引进行操作

我尝试的是:

 PUT myindex/_mapping/model
 {
     "model" : {
        "properties" : {
            "programnumber" : {"type" : "integer", "store" : "yes"}
        }
     }
   }
}

谢谢

2 个答案:

答案 0 :(得分:1)

创建后,字段cannot be changed anymore(除了一些明显的例外)

如果您的programnumber字段是作为double创建的,那很可能是因为您编入索引的第一个文档中该字段的值是浮点值。

答案 1 :(得分:0)

如今,ElasticSearch允许您解决此问题。

只需更改您的映射,然后重新索引。

您可以从类似问题的答案中读到:Change field type from string to integer? and how to re-index?

  

...您必须重新编制索引。您可以使用Logstash(过去曾发布过示例配置)或诸如es-reindex之类的第三方工具来做到这一点。重新索引为新名称(例如,带有下划线的原始名称)后,您可以删除原始索引,并创建一个名称类似于原始索引的别名,该别名指向新索引。从而一切将像以前一样工作。

有趣的链接:Reindex API