我们当前的应用程序在Spring Boot 1.5下运行(随Elastic Search 2.X一起提供)
我们使用嵌入式/内存弹性搜索实例,并使用Node客户端连接到嵌入式/内存弹性实例。
我们希望从嵌入式Elastic Search迁移到外部Elastic Search实例。
这意味着我们需要从Node Client迁移并使用 传输客户端或低级静态客户端或高级静态客户端
我们的Node Client的Spring Boot Config如下所示:
@Configuration
@EnableElasticsearchRepositories
public class ElasticConfiguration {
@Bean
NodeBuilder nodeBuilder(){ return new NodeBuilder(); }
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws IOException {
File tmpDir = File.createTempFile("elastic") );
Settings.Builder elasticsearchSettings = Settings.settingsBuilder()
.put("http.enabled", "true") // 1
.put("index.number_of_shards", "1")
.put("path.data", new File(tmpDir, "data").getAbsolutePath())
.put("path.logs", new File(tmpDir, "logs").getAbsolutePath())
.put("path.work", new File(tmpDir, "work").getAbsolutePath())
.put("path.home", tmpDir);
return new ElasticsearchTemplate(nodeBuilder().local(true)
.settings(elasticsearchSettings.build())
.node()
.client());
}
问题:
1)如果我们从Elastic Node客户端迁移到Elastic Transport客户端,这是否意味着当前已编码的Elastic片段的代码更改量很大 (在创建节点客户端的弹性配置类之外)
2)如果我们从Node Client迁移到Using Rest Client: i)同样,在Elastic Config代码更改之外,这是否意味着对当前编码的Elastic块进行大量代码更改? ii)上面的用于Rest客户端的SpringBoot Elastic Config看起来如何?任何示例代码?
答案 0 :(得分:0)
根据我的经验,您的代码没有任何变化:
1)应该可以进行较小的更改或完全没有更改。但是,您将不得不与其余客户端一起使用,因为传输客户端将很快被删除。否则您将来会在这里再次工作。
2i)取决于您当前正在使用的功能
我已经做了很多这样的迁移,其中许多迁移几乎没有痛苦。但这实际上取决于您的应用程序代码。如果可以切换到高级客户端,则代码中应该只进行了少量更改。但是目前,其余客户端中还缺少一些功能(您可能没有使用)。如果您需要使用低级客户端(由于jvm版本不兼容),您的更改将更多,因为需要一种不同的方法:您需要为请求生成json并取消编组响应。
请同时考虑您的开发资料和测试。可能有一个从您的应用程序开始的嵌入式节点?如果是这样,则需要以其他方式解决。
如果遇到任何迁移问题,请再次回到这里。我们将在这里:D