Интеграция с эластичным поиском Spring: вызвана: java.lang.NoSuchMethodError: org.elasticsearch.common.settings.Settings $ Builder.put ([Ljava / lang / Object;)

Я обновляю эластичную версию 2.x до 6.x. Мне также нужно обновить зависимость данных Spring, чтобы выполнить эластичное обновление. (Использование эластичного облачного управляемого сервиса с x-pack-transport)

Вот мои зависимости:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
        <version>3.1.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>x-pack-transport</artifactId>
        <version>5.6.1</version>
    </dependency>

Это включает зависимость от elasticsearch версии 6.2.2.

Я получаю следующую ошибку при инициализации приложения Spring.

Код подключения:

private Client getEsClient(String clusterIps, String clusterName) throws UnknownHostException
{

    Settings settings = Settings.builder()
            .put("client.transport.nodes_sampler_interval", "5s")
            .put("client.transport.sniff", false)
            .put("transport.tcp.compress", true)
            .put("cluster.name", "cluster-id")
            .put("xpack.security.transport.ssl.enabled", true)
            .put("request.headers.X-Found-Cluster", "cluster-id")
            .put("xpack.security.user", "user:password")
            .put("xpack.security.transport.ssl.verification_mode", "none")
            .build();

    TransportClient client = new PreBuiltXPackTransportClient(settings);

    client.addTransportAddress(
            new TransportAddress(InetAddress.getByName("<cluster>.us-west1.gcp.cloud.es.io"), 9343));
    return client;
}

Вот исключение, возникшее при инициализации контекста Spring:

Вызвано: java.lang.NoSuchMethodError: org.elasticsearch.common.settings.Settings $ Builder.put ([Ljava / lang / Object;) Lorg / elasticsearch / common / settings / Settings $ Builder;

в org.elasticsearch.xpack.notification.email.Account. (Account.java:71)

в org.elasticsearch.xpack.XPackPlugin. (XPackPlugin.java:192)

в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)

в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)

в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)

в java.lang.reflect.Constructor.newInstance (Constructor.java:423)

в org.elasticsearch.plugins.PluginsService.loadPlugin (PluginsService.java:556)

Пожалуйста, дайте мне знать, если кто-нибудь столкнется с этой проблемой раньше.

Заранее спасибо за помощь :)


person geek    schedule 18.12.2018    source источник


Ответы (1)


Я понял проблему, я использовал несовместимую версию зависимости x-pack, которая составляет 5.6.1, данные Spring 3.1.3.RELEASE использует версию эластичного драйвера 6.2.2, поэтому мы должны использовать совместимую зависимость x-pack, а это 6.2 .2.

Вот обновленная зависимость

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
        <version>3.1.3.RELEASE</version>
    </dependency>


    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>x-pack-transport</artifactId>
        <version>6.2.2</version>
    </dependency>

Документация доступна здесь: https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-xpack-client.html.

person geek    schedule 19.12.2018