Spring boot генерирует исключение Netty4HttpServerTransport при запуске упругого поиска TransportClient - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь преобразовать свой проект в проект на основе REST, используя загрузочную версию Spring (версия 2).В первоначальном проекте для поиска по тексту использовался упругий поиск (6.6.1), и он работал как ожидалось.Затем в «весеннем загрузочном стартовом веб-проекте» я ввел RESTController для вызова вышеупомянутого класса TextSearch

Пожалуйста, посмотрите соответствующие классы

public class TextSearch {
    private final TransportClient client;
    public static final Logger LOGGER = LoggerFactory.getLogger(TextSearch.class);

    public TextSearch() {
        Settings settings = Settings.builder().put("cluster.name", "elasticsearch").put("client.transport.sniff", true).build();
        client= new PreBuiltTransportClient(settings);
        try {
            client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));
        }catch (UnknownHostException e) {
            LOGGER.error("Unknown host exception {}", e);
        }
    }
}
// spring rest controller class
@RestController
public class SearchController {


    @RequestMapping("/search")
    public String search(@RequestParam(value="name", defaultValue="World") String name) {

        List<SCMappedData> mappedList = FetchScDataJsoup.fetch();
   System.out.println("#######no of entries" + mappedList.size());
        TextSearch textSearch = new TextSearch("legal", "sc");
        boolean indexCreation = textSearch.createIndex(mappedList);

        List<SearchHit> hits = textSearch.search(name);
                for (SearchHit hit:hits
             ) {
            System.out.println(hit.getSourceAsString());
        }
               if(hits.size() > 0) {
                   return hits.get(0).getExplanation().getDescription();
               } else {
                   return " nt found";
               }

                }
}

Но запрос get завершается неудачно со следующей ошибкой

java.lang.NoSuchFieldError: Shared
    at org.elasticsearch.http.netty4.Netty4HttpServerTransport.<clinit>(Netty4HttpServerTransport.java:124) ~[transport-netty4-client-5.6.11.jar:5.6.11]
    at org.elasticsearch.transport.Netty4Plugin.getSettings(Netty4Plugin.java:55) ~[transport-netty4-client-5.6.11.jar:5.6.11]
    at org.elasticsearch.plugins.PluginsService.lambda$getPluginSettings$0(PluginsService.java:89) ~[elasticsearch-6.6.1.jar:6.6.1]
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271) ~[na:na]
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1492) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]
    at org.elasticsearch.plugins.PluginsService.getPluginSettings(PluginsService.java:89) ~[elasticsearch-6.6.1.jar:6.6.1]
    at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:147) ~[elasticsearch-6.6.1.jar:6.6.1]
    at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:288) ~[elasticsearch-6.6.1.jar:6.6.1]
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:128) ~[transport-6.6.1.jar:6.6.1]
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:114) ~[transport-6.6.1.jar:6.6.1]
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:104) ~[transport-6.6.1.jar:6.6.1]
    at search.TextSearch.<init>(TextSearch.java:40) ~[classes/:na]
    at run.SearchController.search(SearchController.java:25) ~[classes/:na]

Я знаю, что мне, возможно, придется дать больше подробностей, чтобы получить ответ, но я не уверен, какие подробности я должен дать.

Это моя первая попытка работать с Springпроекты.Поэтому мне было интересно, может ли кто-нибудь дать совет высокого уровня по этому вопросу.

1 Ответ

1 голос
/ 29 апреля 2019

Если посмотреть на трассировку стека исключений, версия ElasticSearch не совпадает с Netty-клиентом.Так что используйте ту же версию.

<dependency>
    <groupId>org.elasticsearch.plugin</groupId>
    <artifactId>transport-netty4-client</artifactId>
    <version>6.6.1</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...