Миграция с клиента Elastic Node на клиент транспорта или отдыха - PullRequest
0 голосов
/ 22 ноября 2018

Наше текущее приложение работает под Spring Boot 1.5 (поставляется с Elastic Search 2.X)

Мы используем экземпляр поиска Embedded / In-Memory Elastic и используем Node client для подключения к Embedded / In-MemoryЭластичный экземпляр.

Мы планируем перейти от встроенного эластичного поиска к внешнему экземпляру эластичного поиска.

Это означает, что нам нужно будет перейти с Node Client и использовать либо Transport Client, либо Low-Level-Rest-Client или High-Level-Rest-Client

Наша Spring Boot Config для Node Client выглядит следующим образом:

@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 на использование Rest Client: i) Опять же, вне изменений кода Elastic Config, это будет означать серьезные изменения кода для текущего закодированного Elasкусочки тика?ii) Как будет выглядеть вышеупомянутый клиент SpringBoot Elastic Config for Rest?любой пример кода?

1 Ответ

0 голосов
/ 22 ноября 2018

Без какого-либо взгляда на ваш код, исходя из моего опыта:

1) должен работать с незначительными изменениями или вообще без изменений.Но вам придется пойти с остальным клиентом, так как транспортный клиент будет удален в ближайшее время.Или у вас снова будет работа в будущем.

2i) это зависит от функций, которые вы используете в настоящее время

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

I 'Мы сделали много таких миграций, многие из них почти безболезненны.Но это действительно зависит от кода вашего приложения.Если вы можете переключиться на высокоуровневый клиент, в вашем коде должны быть лишь незначительные изменения.Но в остальном клиенте на данный момент также отсутствуют некоторые функции (вы, вероятно, не используете).Если вам нужно использовать низкоуровневый клиент (из-за несовместимости версий jvm), ваши изменения будут намного больше, так как необходим другой подход: вам нужно сгенерировать ваш json для запросов и отменить ответ.

Пожалуйста, рассмотрите ваш профиль разработки и ваши тесты тоже.Возможно есть встроенный узел, начинающийся с вашего приложения?Если это так, это нужно решить по-другому.

Если у вас возникнут какие-либо проблемы с миграцией, не стесняйтесь возвращаться сюда снова.Мы будем здесь: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...