elasticsearch Java API 客户端(Node Client)
你可以以多种方式使用Java客户端:
在现有的一个集群中,执行index, get, delete 和search操作;
在一个运行的集群中运行管理任务;
将elasticsearch api嵌入你的应用程序中,并进行单元或者集成测试。
想获取一个java客户端也是非常简单的,最常见的方式有:
在集群中,获取一个节点做为嵌入的节点。(比如有多个节点,使用随意一个配置到api中即可);
从节点中来请求到一个client客户端,以供程序使用。
或者你可以使用TransportClient
来连接一个集群
注意:使用java的客户端时,注意客户端的版本要和集群的版本一致。不然,如果混合着用,就可能会遇到不可预知的问题。
Node Client
实例化一个基于节点的客户端,是一种最简单的获取客户端的方式。
//静态引入
import static org.elasticsearch.node.NodeBuilder.nodeBuilder;
// main函数
public static void main(String[] args) {
// on startup
Node node = nodeBuilder().node();
Client client = node.client();
// on shutdown
node.close();
}
此时,也许会疑问,单单这个语句,怎么知道要使用哪个集群呢?当你的java程序和你的集群在同一个局域网时。当启动一个node client时,系统会把nodeclient这个当成一个节点,加入到集群中。
首先你要在项目的/src/main/resources/路径下,添加elasticsearch.yml文件,在文件中定义cluster.name。
cluster.name: yourclustername
或者在java代码中这样写:
Node node = nodeBuilder().clusterName("yourclustername").node();
Client client = node.client();
这么做的好处是:操作会自动路由到对应的节点上去,不会产生 “double hop”(双跳)的现象。
比如:索引操作会自动在分片中执行。(此处不太理解)
当你启动一个节点时,最重要的决定是它是否应该保存数据。
换句话说,索引和分片是否被分配在这个节点上。
很多时候,我们希望客户端就单纯是客户端,没有分片在上面。
那可以通过配置来实现,将node.data设置为false,将node.client设置为true。
Node node = nodeBuilder().client(true).node();
Client client = node.client();
另一个常见的用途是:启动一个节点,然后使用客户端是进行单元或者集成测试。
在这种情况下,我们应该启动一个“local”的节点。(比如在本机中搭建一个节点)
Node node = nodeBuilder().local(true).node();
Client client = node.client();
转载于:https://my.oschina.net/claireliu/blog/464215
上一篇: 在旅游车上怎么拍出漂亮的风景照片?
下一篇: go-torch性能分析工具使用
推荐阅读
-
Elasticsearch Java Rest Client API 整理总结 (一)
-
Node.js中的http请求客户端示例(request client)
-
Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI
-
SpringBoot:Java High Level REST Client 搜索 API
-
elasticsearch FunctionScore Java API sample
-
Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries
-
Elasticsearch Java API 的使用(14)—优化索引创建之setting设置、写入优化
-
Java客户端API
-
Elasticsearch 5.X Java API 创建客户端
-
Elasticsearch Java REST高级客户端 MultiSearch Api