Java Elasticsearch客户端始终为null。

9
我最近从elasticsearch 1.7升级到2.0,注意到设置客户端的方式已经改变。我查阅了文档,但不知何故客户端一直为null。请问我是否正确设置了客户端。
以下是我的代码:
    Client client = null;

    try {
        client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
    } catch (Exception e) {
        Logger.log(e);
    } finally {
        client.close();
        try {
            conn.close();
        } catch (SQLException e) {
            Logger.log(e);
        }
    }

你获得了一个异常吗?你的语法应该是正确的。 - Sezin Karli
我收到了这个错误:java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor; - Daniel Buckle
这完全与Guava相关,涉及同时存在几个Guava版本的问题。我建议您进行干净的编译。如果这是一个war文件,请删除webapps内项目文件夹并重新部署。与ES无关。 - Sezin Karli
我已经解决了这个问题,它似乎是一个依赖关系的问题。现在我遇到了这个问题:“方法抛出'java.lang.StackOverflowError'异常。无法评估org.elasticsearch.common.inject.InjectorImpl.toString()”。 - Daniel Buckle
@DanielBuckle 你好,你解决了StackOverflowError问题吗? - Animesh Pandey
1个回答

14

如评论中所述,但更详细一些:Elasticsearch 2.0使用Guava 18.0 (见https://github.com/elastic/elasticsearch/pull/7593)。因此,为了修复像java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concu‌rrent/Executor;这样的错误,请确保使用Guava 18.0作为依赖项,而不是其他版本。


已经尝试使用Guava 20.0与elasticsearch 2.4.1并且它可以正常工作!但是很奇怪的是,Guava 15.0似乎可以与ES 2.3.5一起使用。在我看来,升级到ES 2.0或更高版本时仍然建议使用Guava 18.0或更高版本。 - quickbrownfox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接