elasticsearch,autosuggest,elasticsearch-jest,Java,elasticsearch,Autosuggest,Elasticsearch Jest" /> elasticsearch,autosuggest,elasticsearch-jest,Java,elasticsearch,Autosuggest,Elasticsearch Jest" />

JestClient建议不要使用java.lang.NoSuchMethod错误

JestClient建议不要使用java.lang.NoSuchMethod错误,java,elasticsearch,autosuggest,elasticsearch-jest,Java,elasticsearch,Autosuggest,Elasticsearch Jest,对于所有搜索,Jest客户端将使用uri进行初始化,如下所示: http://serverIp:serverPort _all/_search 如何使用uri初始化客户机,如下所示 http://serverIp:serverPort _all/_suggest 我在Ipas JestClient和word的方法中使用以下代码: String suggestionName = "custom-suggestion-3"; Suggest suggest = new Su

对于所有搜索,Jest客户端将使用uri进行初始化,如下所示:

http://serverIp:serverPort _all/_search
如何使用uri初始化客户机,如下所示

http://serverIp:serverPort _all/_suggest
我在Ipas JestClient和word的方法中使用以下代码:

String suggestionName = "custom-suggestion-3";

Suggest suggest = new Suggest.Builder("{" +
                                        "  \"" + suggestionName + "\" : {" +
                                        "    \"text\" :" + "\"" + wordToSearch + "\""+
                                        "    \"term\" : {" +
                                        "      \"field\" : \"description\"" +
                                        "    }" +
                                        "  }" +
                                        "}").build();


SuggestResult result = client.execute(suggest);
但是,它会产生一个错误

java.lang.NoSuchMethodError:io.searchbox.client.http.JestHttpClient.getElasticSearchServer()Ljava/lang/String

在调试过程中,我复制了suggest变量的值,并将其粘贴到Sense中,它按预期工作

我将以下maven依赖项用于
\u all/\u search

<dependency>
   <groupId>io.searchbox</groupId>
      <artifactId>jest</artifactId>
         <version>0.1.2</version>
 </dependency>

io.searchbox
开玩笑
0.1.2
正在运行的elastic版本是5.0.1,建议导入以下依赖项

<dependency>
   <groupId>io.searchbox</groupId>
       <artifactId>jest-common</artifactId>
          <version>2.0.0</version>
</dependency>

io.searchbox
开玩笑
2.0.0

有什么建议吗?

java.lang.NoSuchMethodError表示依赖项之间存在版本不匹配。具体地说,有人试图调用带有签名的方法

String getElasticSearchServer()
JestHttpClient
类中。运行时使用的类的版本中不存在此方法

建议:

  • 检查各JAR的实际使用版本。特别要检查您的部署是否没有同一JAR的多个版本

  • 对jest和jest公共依赖项使用相同的版本。从我看到的情况来看,它们作为一个集合进行了构建和测试,具有相同的版本号

  • Jest版本0.1.2非常古老。看起来它是在2012年12月发布的。即使是2.0.0也非常古老:2015年11月

  • 由于您使用的是ElasticSearch 5.0.1,正确的Jest版本应该是5.0.0或更高版本。参考: