Обновление клиента elasti c и зависимостей для подключения к более старому экземпляру сервера elasti c - PullRequest
0 голосов
/ 26 марта 2020

В настоящее время я использую следующие клиентские библиотеки Elasti c в моем весеннем загрузочном приложении:

       <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.5.3</version>
       </dependency>
       <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.plugin</groupId>
            <artifactId>transport-netty4-client</artifactId>
            <version>5.5.3</version>
        </dependency>

И следующий код в классе конфигурации:

import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

@Configuration
@EnableElasticsearchRepositories(basePackages = "com.x.y.repository",queryLookupStrategy= Key.CREATE_IF_NOT_FOUND)
...
public class AppConfiguration extends AbstractAnnotationConfigDispatcherServletInitializer {
...
 @Bean
    public Client client() {
...
final Settings elasticsearchSettings = Settings.builder().put("http.enabled", "false")/*.put("index.mapping.single_type","false")*/
                    .put("cluster.name", elasticSearchCluster).build();
            logr.debug("elasticSearchCluster--> %d", elasticSearchCluster);
            logr.debug("elasticSearchHost --> %d", elasticSearchHost);
            try {
                TransportClient client1 = new PreBuiltTransportClient(elasticsearchSettings);
                client1.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
                // return client;
                setClient(client1);
            } catch (UnknownHostException e) {
                logr.error("Not able to connect to Elastic Search: ", e);
            }
        }
        return client;
    }
...

Выше приложение подключается к Сервер ES 5.5.3 нормально. Теперь я хотел бы использовать последнюю версию клиентских зависимостей 7.6.0 и остальных клиентов.

Вопросы:

  1. Можно ли использовать клиент последней версии для подключения к более старым версиям экземпляра сервера поиска elasti c?
  2. Если да, можете ли вы Пожалуйста, поделитесь версиями библиотек, которые я должен использовать, чтобы это работало правильно? Некоторые версии, которые я пробовал, вызывали ошибки в парсерах запросов lucene; Другие компилируются, но выдают ошибки при запуске.

1 Ответ

0 голосов
/ 26 марта 2020

Нет. Это не сработает. Это не проблема, специфичная для Spring Data Elasticsearch c, но она возникает в результате эволюции самих библиотек эластичного поиска.

Между Elasticsearch 5 и 7 формат запросов и формат возвращаемых данных изменились, поэтому клиент 7.6.1 не может понять ответы от сервера 5.5.3 и то же самое для запросов в другом направлении.

Таким образом, вам нужно будет перенести кластер ES с 5.5.3 на текущую версию, прежде чем адаптироваться к фактическому Spring Data Elasticsearch.

...