繁体   English   中英

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

[英]Is it possible to update settings and mappings of an index in elasticsearch at runtime using JAVA API

我使用curl命令创建了一个名为synonym_index的索引

我在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();

它没有用! 而且我在索引中的所有文档都被删除了! 我要去哪里错了? 有任何想法吗??

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

不过,有几种策略可用于重新索引数据-一种是删除数据,创建映射,然后索引它(这就是您正在做的事情)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM