JestClient建议不工作

时间:2017-01-18 11:44:47

标签: java elasticsearch autosuggest jest

对于所有搜索,Jest-client都使用uri进行初始化:

http://serverIp:serverPort _all/_search

如何使用uri之类的内容初始化客户端以获取建议?

http://serverIp:serverPort _all/_suggest

我在传递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; '在client.execute期间(建议)。 但在调试过程中,我复制了建议变量的值,并将其粘贴到 Sense 中,并且工作正常。

我对_all / _search

使用以下maven依赖项
<dependency>
   <groupId>io.searchbox</groupId>
      <artifactId>jest</artifactId>
         <version>0.1.2</version>
 </dependency>

正在运行的弹性版本是5.0.1,而对于Suggest,已导入以下依赖项。

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

任何建议?

1 个答案:

答案 0 :(得分:0)

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

String getElasticSearchServer()

JestHttpClient 类中。该方法在运行时使用的那个类的版本中不存在。

建议:

  1. 检查实际使用的各个 JAR 的版本。尤其要检查您的部署是否没有同一 JAR 的多个版本。

  2. 为您的 jest 和 jest-common 依赖项使用相同的版本。据我所知,它们是作为具有相同版本号的集合构建和测试的。

  3. Jest 0.1.2 版本很古老。看起来它是在 2012 年 12 月发布的。即使 2.0.0 也很旧:2015 年 11 月。

  4. 由于您使用的是 ElasticSearch 5.0.1,正确的 Jest 版本应该是 5.0.0 或更高版本。参考:https://github.com/searchbox-io/Jest