elasticsearch,Java,Spring Boot,elasticsearch" /> elasticsearch,Java,Spring Boot,elasticsearch" />

Java Spring boot在弹性搜索传输客户端启动期间引发Netty4HttpServerTransport异常

Java Spring boot在弹性搜索传输客户端启动期间引发Netty4HttpServerTransport异常,java,spring-boot,elasticsearch,Java,Spring Boot,elasticsearch,我正在尝试使用SpringBoot(版本2)将我的项目转换为基于REST的项目。最初的项目使用弹性搜索(6.6.1)进行文本搜索,并按预期工作。然后在“SpringBootStarterWeb项目”中,我引入了一个RESTController来调用上面的TextSearch类 请参阅相关课程 public class TextSearch { private final TransportClient client; public static final Logger LOGG

我正在尝试使用SpringBoot(版本2)将我的项目转换为基于REST的项目。最初的项目使用弹性搜索(6.6.1)进行文本搜索,并按预期工作。然后在“SpringBootStarterWeb项目”中,我引入了一个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";
               }

                }
}
公共类文本搜索{
私人最终运输客户;
公共静态最终记录器Logger=LoggerFactory.getLogger(TextSearch.class);
公共文本搜索(){
Settings Settings=Settings.builder().put(“cluster.name”、“elasticsearch”).put(“client.transport.sniff”,true.build();
客户端=新的预构建传输客户端(设置);
试一试{
client.addTransportAddress(新的TransportAddress(InetAddress.getByName(“localhost”),9300));
}捕获(未知后异常e){
LOGGER.error(“未知主机异常{}”,e);
}
}
}
//弹簧静止控制器类
@RestController
公共类搜索控制器{
@请求映射(“/search”)
公共字符串搜索(@RequestParam(value=“name”,defaultValue=“World”)字符串名){
List mappedList=FetchScDataJsoup.fetch();
System.out.println(“+mappedList.size());
TextSearch TextSearch=新的TextSearch(“合法”、“sc”);
boolean indexCreation=textSearch.createIndex(mappedList);
列表点击次数=textSearch.search(名称);
for(SearchHit:hits)
) {
System.out.println(hit.getSourceAsString());
}
如果(hits.size()>0){
返回hits.get(0.getExpression().getDescription();
}否则{
返回“未找到”;
}
}
}
但是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]
java.lang.NoSuchFieldError:共享
在org.elasticsearch.http.netty4.Netty4HttpServerTransport.(Netty4HttpServerTransport.java:124)~[transport-netty4-client-5.6.11.jar:5.6.11]
在org.elasticsearch.transport.Netty4Plugin.getSettings(Netty4Plugin.java:55)~[transport-netty4-client-5.6.11.jar:5.6.11]
在org.elasticsearch.plugins.PluginsService.lambda$getpluginsetings$0(PluginsService.java:89)~[elasticsearch-6.6.1.jar:6.6.1]
在java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271)~[na:na]
在java.base/java.util.ArrayList$ArrayListSpliterator.ForEachLeving(ArrayList.java:1492)~[na:na]
在java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)~[na:na]
在java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)~[na:na]
在java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)~[na:na]
在java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)~[na:na]
在java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)~[na:na]
在org.elasticsearch.plugins.PluginsService.getPluginSettings(PluginsService.java:89)~[elasticsearch-6.6.1.jar:6.6.1]
在org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:147)~[elasticsearch-6.6.1.jar:6.6.1]
在org.elasticsearch.client.transport.TransportClient.(TransportClient.java:288)~[elasticsearch-6.6.1.jar:6.6.1]
在org.elasticsearch.transport.client.PreBuiltTransportClient.(PreBuiltTransportClient.java:128)~[transport-6.6.1.jar:6.6.1]
在org.elasticsearch.transport.client.PreBuiltTransportClient.(PreBuiltTransportClient.java:114)~[transport-6.6.1.jar:6.6.1]
在org.elasticsearch.transport.client.PreBuiltTransportClient.(PreBuiltTransportClient.java:104)~[transport-6.6.1.jar:6.6.1]
在search.TextSearch.(TextSearch.java:40)~[classes/:na]
在run.SearchController.search(SearchController.java:25)~[classes/:na]
我知道我可能需要给出更多的细节才能得到答案,但我不确定我必须给出的所有细节


这是我第一次尝试使用Spring项目。因此,我想知道是否有人可以就此提供高级建议。

查看异常堆栈跟踪,ElasticSearch版本与netty客户端不匹配。所以使用相同的版本

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

org.elasticsearch.plugin
传输网络4客户端
6.6.1

查看异常堆栈跟踪,ElasticSearch版本与netty客户端不匹配。所以使用相同的版本

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

org.elasticsearch.plugin
传输网络4客户端
6.6.1

Hi,它现在在没有上述依赖项的情况下为我工作。我忘了更新这里。老实说,我忘了它是如何解决的,但我想我是用spring boot starter作为一个工件,而不是spring boot starter web org.springframework.boot spring boot starter web Hi,它现在对我有效,没有上述依赖性。我忘了更新这里。老实说,我忘了它是如何解决的,但我想我是使用SpringBootStarter作为人工制品,而不是SpringBootStarterWeb org.springframework.boot SpringBootStarterWeb