文档章节

elasticsearch Java API 客户端(Node Client)

想不通的250
 想不通的250
发布于 2015/06/08 16:41
字数 624
阅读 84
收藏 0

你可以以多种方式使用Java客户端:

  1. 在现有的一个集群中,执行index, get,  delete 和search操作;

  2. 在一个运行的集群中运行管理任务;

  3. 将elasticsearch api嵌入你的应用程序中,并进行单元或者集成测试。

想获取一个java客户端也是非常简单的,最常见的方式有:

  1. 在集群中,获取一个节点做为嵌入的节点。(比如有多个节点,使用随意一个配置到api中即可);

  2. 从节点中来请求到一个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();



© 著作权归作者所有

想不通的250
粉丝 6
博文 107
码字总数 18851
作品 0
广州
程序员
私信 提问
ElasticSearch Client详解

从本文开始,将与大家进入到Elasticsearch的精妙世界中来,基于当前最新的6.4.x版本。 本文将重点探讨ElasticSearch Client的相关知识,重点关注TransportClient与Rest Client。Elasticsear...

丁威
03/10
0
0
Elasticsearch入门实践

一. 系统环境 操作系统:CentOS release 6.8 (Final) ES版本:6.1.1 二. 安装 先确认安装了Java运行时环境: 解压ES压缩包: 三. 启动 1. 启动ES单节点 当然,对于在后台以守护进程模式运行的...

哲别0
2018/06/06
218
0
elasticsearch使用指南之ElasticSearch Client详解

从本文开始,将与大家进入到Elasticsearch的精妙世界中来,基于当前最新的6.4.x版本。 本文将重点探讨ElasticSearch Client的相关知识,重点关注TransportClient与Rest Client。Elasticsear...

唯有坚持不懈
03/31
0
0
Elasitcsearch High Level Rest Client学习笔记(一)

文档地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.1/java-rest-high.html java doc地址: https://artifacts.elastic.co/javadoc/org/elasticsearch/client/el......

木子SMZ
2018/07/12
2.2K
0
elasticsearch 集群部署

Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard的方式保证数据安全,并且提供自动resharding的功能,github等大型的站点也都采用Elasticsearch作为其搜索...

wx5b30a7c097b85
2018/06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
10
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
23
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部