是否可以使用JAVA API在运行时更新elasticsearch中的索引的设置和映射

时间:2014-05-22 04:40:01

标签: java elasticsearch

我使用synonym_index命令

创建了一个名为curl的索引

我在JAVA API中尝试了以下内容

this.connection.admin().indices().prepareClose("synonym_index").execute().actionGet();
this.connection.admin().indices().prepareUpdateSettings("synonym_index").setSettings(settings).execute().actionGet();
this.connection.admin().indices().prepareOpen("synonym_index").execute().actionGet();
this.connection.admin().indices().prepareDeleteMapping("synonym_index").setType("courses").execute().actionGet();
this.connection.admin().indices().preparePutMapping("synonym_index").setType("courses").setSource(mappings).execute().actionGet();

它不起作用!!索引中的所有文档都被删除!!!!我哪里错了?任何想法??

1 个答案:

答案 0 :(得分:0)

如果不重新索引数据,就无法更改映射上的类型。

您可以使用几种策略来重新索引数据 - 一种是删除它,创建映射,然后将其编入索引(这就是您正在做的事情)。

第二个选项是使用类似elasticsearch-exporter(https://www.npmjs.org/package/elasticsearch-exporter)的东西将数据从一个索引复制到另一个索引(因此在新索引上创建所需的设置/映射,然后从旧索引复制数据)新的)。然后,您可以设置将旧索引名称映射到新索引名称的别名。