从Elastic Node Client迁移到Transport或Rest Client

时间:2018-11-22 03:59:20

标签: elasticsearch

我们当前的应用程序在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看起来如何?任何示例代码?

1 个答案:

答案 0 :(得分:0)

根据我的经验,您的代码没有任何变化:

1)应该可以进行较小的更改或完全没有更改。但是,您将不得不与其余客户端一起使用,因为传输客户端将很快被删除。否则您将来会在这里再次工作。

2i)取决于您当前正在使用的功能

2ii),请参见https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.5/java-rest-high-level-migration.html

我已经做了很多这样的迁移,其中许多迁移几乎没有痛苦。但这实际上取决于您的应用程序代码。如果可以切换到高级客户端,则代码中应该只进行了少量更改。但是目前,其余客户端中还缺少一些功能(您可能没有使用)。如果您需要使用低级客户端(由于jvm版本不兼容),您的更改将更多,因为需要一种不同的方法:您需要为请求生成json并取消编组响应。

请同时考虑您的开发资料和测试。可能有一个从您的应用程序开始的嵌入式节点?如果是这样,则需要以其他方式解决。

如果遇到任何迁移问题,请再次回到这里。我们将在这里:D