gpt4 book ai didi

java - JestClient 建议不要使用 java.lang.NoSuchMethodError

转载 作者:行者123 更新时间:2023-12-05 07:45:23 24 4
gpt4 key购买 nike

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

http://serverIp:serverPort _all/_search

如何使用 uri 初始化客户端,如下所示?

http://serverIp:serverPort _all/_suggest

我在 Ipas JestClient 和一个单词的方法中使用以下代码:

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;' during client.execute(suggest).

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

我正在为 _all/_search 使用以下 Maven 依赖项

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

正在运行的elastic版本是5.0.1,对于Suggest,已经导入了以下依赖。

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

有什么建议吗?

最佳答案

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

关于java - JestClient 建议不要使用 java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41718581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com