Elasticsearch Java API客户端

4
我想要运行以下Java代码:
import java.util.Map;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.node.Node;
import static org.elasticsearch.node.NodeBuilder.*;

public class MongoDB {

public static void main(String[] args) {
    Node node = nodeBuilder().clusterName("elasticsearch").client(true).node();
    Client client = node.client();


    node.close();
}  
}

我使用以下命令运行了mongod:

mongod --port 27017 --replSet rs0

使用默认配置的Elasticsearch

每次运行程序时,我都会遇到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/util/Version
  at org.elasticsearch.Version.<clinit>(Version.java:42)
  at org.elasticsearch.Version.<clinit>(Version.java:42)
  at org.elasticsearch.node.internal.InternalNode.<init>(InternalNode.java:129)
  at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:159)
  at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166)
  at org.elasticsearch.river.mongodb.MongoDB.main(MongoDB.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.util.Version
  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 5 more
Java Result: 1

Elasticsearch 是基于 Lucene 的搜索服务器。您必须包含 lucene jar 文件 lucene-core-x.x.x.jar 和其他依赖的 jar 文件以使此代码工作。 - Hardik Bhalani
Lucene依赖JAR包和其他依赖项可在elasticsearch安装文件夹的lib目录中找到。您只需将该位置添加到类路径中即可解决这些依赖问题。 - Dhruvajyoti Chatterjee
3个回答

8

Elasticsearch是基于Lucene的搜索服务器。要使这段代码工作,您需要包括lucene jar文件lucene-core-x.x.x.jar和其他相关的jar文件...


我已经有了lucene-core jar包,但我仍然遇到这个异常。 - Jerry
Lucene核心版本x.x.x需要大于3.0.0。我们在Maven pom.xml中使用了旧版的Lucene(2.x),导致出现完全相同的错误。 - JN01

1
使用Elasticsearch的Java客户端,您需要2个依赖项:Elasticsearch jar和lucene core jar。
如果您正在创建Osgi bundle,则需要将names.txt文件放在bundle中,并在transport client设置中指定配置路径。
希望这有所帮助...

0

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