org.elasticsearch.common.transport.InetSocketTransportAddress не найден на Elasticsearch 6
Мой код отлично работает в elasticsearch 5, но когда я обновил его с 5 до 6. он показывает
org.elasticsearch.common.transport.InetSocketTransportAddress not found
полная трассировка стека:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project elastic-store: Compilation failure
[ERROR] /home/elastic/elastic-store/src/main/java/com/qw/psence/store/es/common/ESClient.java:[12,42] cannot find symbol
[ERROR] symbol: class InetSocketTransportAddress
[ERROR] location: package org.elasticsearch.common.transport
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
может ли кто-нибудь помочь мне решить эту проблему?
Примечание: Elaticsearch jar в порядке.
Ответы
Ответ 1
Эластичный поиск 6.0 удалил класс InetSocketTransportAddress. Я решил эту проблему, заменив класс InetSocketTransportAddress классом TransportAddress.
// on startup
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300))
.addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300));
// on shutdown
client.close();
Ответ 2
Есть много решений этой проблемы, но я получаю эту ошибку, потому что, поскольку я пытался создать базовую конфигурацию эластичного поиска с SpringBoot:
Я забыл начать поиск эластичных...
: Facepalm:
Итак, просто:
- откройте командную строку в папке
bin
в каталоге установки Elasticsearch *
- введите
elasticsearch
- нажмите Enter
Чтобы убедиться, что это работает, откройте http://localhost:9200/
в вашем браузере. Вы должны получить JSON-ответ, содержащий имя, имя_кластера, версию эластичного поиска и т.д.
* (В Windows) Откройте папку ES_INSTALLATION_DIR\elasticsearch-x.x.x\bin
, удерживайте клавишу Shift, щелкните правой кнопкой мыши область папки и в раскрывающемся меню выберите Open command window here
.
Ответ 3
В моем случае проблема заключалась в противоречивой версии эластичного поиска, который был добавлен в мой проект spring-boot-dependencies
. Если ваш pom не наследует от spring-boot-starter-parent
, а вместо этого использует раздел dependencyManagement
для импорта spring-boot-dependencies
, и вам нужна более старая версия эластичного поиска в пути к классам, вот решение: InetSocketTransportAddress. Всегда запускайте mvn -Dverbose=true help:effective-pom
и проверяйте эффективную помпу на наличие конфликтов. -Dverbose=true
имеет решающее значение здесь. Это позволяет увидеть, откуда возникает нежелательная зависимость.