当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch Java API客户端

易成双
2023-03-14

我想运行以下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();
}  
}

我用以下命令运行mon神:

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

共有3个答案

丌官盛
2023-03-14

从最新的ES(5.6.3)起,NodeBuilder不再使用
避免使用它,并开始使用TransportClient以获得未来的支持。

欲了解更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_50_java_api_changes.html

暨嘉
2023-03-14

要使用弹性搜索的java客户端...你有2个依赖项...
Elasticsearch jar和Lucene core jar...

如果您正在制作Osgi bundle,您需要将names.txt文件放入bundle中,并在传输客户端设置中指定配置路径。

希望对你有帮助。。。

呼延骏俊
2023-03-14

Elasticsearch是一款基于Lucene的搜索服务器。您必须包含lucene jar文件lucene-core-x.x.jar和其他相关jar文件,才能使代码正常工作。。。

 类似资料:
  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • URI 方法 URI() string 返回当前客户端使用的服务器地址。 SetURI 方法 SetURI(uri string) 设置当前客户端使用的服务器地址。如果你想要设置多个服务器地址,请使用 SetURIList 方法代替该方法。 URIList 方法 URIList() []string 返回当前客户端可使用的服务器地址列表。 SetURIList 方法 SetURIList(uriL

  • 客户端事件通过 SetEvent 方法进行设置。 客户端事件有两个,它们分别定义为: type onErrorEvent interface { OnError(name string, err error) }   type onFailswitchEvent interface { OnFailswitch(Client) } 因为 go 语言不需要显式实现接口的特点,所以这两

  • 创建客户端有两种方式,一种是直接使用特化的构造器函数,另一种是使用工厂构造器函数。 第一种方式返回的是具体的客户端结构体指针对象,第二种方式返回的是客户端接口对象。 使用特化的构造器函数创建客户端 特化的构造器函数有下面几个: func NewHTTPClient(uri ...string) (client *HTTPClient) func NewTCPClient(uri ...string

  • 客户端下载地址: windows 32位安装包 windows 64位安裝包 mac 安装包 Android App iOS App

  • 问题 你想使用网络上提供的服务。 解决方案 创建一个基本的 TCP 客户机。 在 Node.js 中 net = require 'net' domain = 'localhost' port = 9001 connection = net.createConnection port, domain connection.on 'connect', () -> console.log

  • 客户端调用服务端 服务端的proto文件copy到客户端 获取grpc客户端 //sample 为服务名称 var client = await provider.FindGrpcClient<RpcTest.RpcTestClient>("sample"); 调用服务方法 var result = await client.SayHelloAsync(new HelloRequest() {

  • Disque 在源码中附带了命令行客户端程序 disque , 通过这个程序可以以交互的形式向 Disque 发送命令: $ ./disque 127.0.0.1:7711> PING PONG 另外你也可以使用以下编程语言的客户端来操作 Disque : Ruby 客户端 https://rubygems.org/gems/disque Java 客户端 https://github.com/x