ElasticSearch的javaAPI之Client
翻译的原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-client
翻译ElasticSearch的javaAPI之Client
本节描写叙述了elasticsearch提供的Java API,全部elasticsearch操作使用client对象运行。
全部的操作在本质上是全然asynchronous(接受一个listener,或返回一个future)。
此外,在client的操作,能够批量处理。
注意: all the APIs are exposed through the Java API
maven repository
比如,你能够在pom.xml文件里增加以下这几行
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${es.version}</version>
</dependency>您能够以多种方式使用Java client:
对一个现有的cluster中index,运行标准的get,delete和search操作
在一个执行群集执行管理任务
执行嵌入在您自己的应用程序的elasticsearch,或者当你想执行单元和集成測试,启动节点
获取一个elasticsearch client是easy的。以下最经常使用的方式:
1.创建一个节点( acts as a node within a cluster)
2.从节点请求client(from your embedded
Node)还有一种方式是通过创建一个TransportClient连接到群集。
Important:
请注意,我们建议使用同一版本号的client和集群。由于你可能遇到一些不兼容的问题,当混用不同版本号。
Node client:
实例化一个基于节点的client是最简单的方法,能够让客户对elasticsearch进行运行操作。
importstatic org.elasticsearch.node.NodeBuilder.*; // on startup Node node = nodeBuilder().node();
Client client = node.client(); // on shutdown node.close();当你启动一个节点,它增加了一个elasticsearch集群。你能够通过简单的设置cluster.name设置不同的集群,或显式地使用clusterName method方法。
你能够定义cluster.name在/src/main/resources / elasticsearch.yml文件在您的项目。仅仅要elasticsearch.yml是在类路径中存在,它将被用来当您启动节点。
cluster.name: yourclusternameOr in Java:
Node node = nodeBuilder().clusterName("yourclustername").node();
Client client = node.client();使用client的优点是操作是自己主动路由到节点的操作须要运行,不运行“double hop”。比如,index操作将在shard上自己主动运行的。
当你启动一个节点,最重要的是决定是否应该保存数据或不。换句话说,该indices和shards被分配给它的。非常多时候我们会须要client不过client,没有shards分配给他们。这是简单的设置是node.data设置为false或node.client的配置true(the NodeBuilder respectivehelper methods on it):
importstatic org.elasticsearch.node.NodeBuilder.*; // on startup Node node = nodeBuilder().client(true).node();
Client client = node.client(); // on shutdown node.close();还有一个常见方法启动节点和使用client单元/集成測试。在这样的情况下,我们要開始一个“local”节点(与“local”的discovery and transpor)。再次,这仅仅是一个简单的设置启动节点时。注意,“local”在这里是指当地的JVM(嗯,实际上的类装载器),这意味着两个本地server开在同样的JVM,组成一个集群。
importstatic org.elasticsearch.node.NodeBuilder.*; // on startup Node node = nodeBuilder().local(true).node();
Client client = node.client(); // on shutdown node.close();transport client
TransportClient 使用 transport module远程连接elasticsearch集群,它不增加群集,但仅仅会有一个或多个初始传输地址和与集群交流对每一个动作robin fashion(尽管大多数行动将可能是“two hop”操作)。
// on startup Client client = new TransportClient()
.addTransportAddress(new InetSocketTransportAddress("host1", 9300))
.addTransportAddress(new InetSocketTransportAddress("host2", 9300)); // on shutdown client.close();请注意,你必须设置群集名称,假设你使用一个不同的“elasticsearch”:
Settings settings =ImmutableSettings.settingsBuilder()
.put("cluster.name", "myClusterName").build();
Client client = new TransportClient(settings);
//Add transport addresses and do something with the client...或者使用
elasticsearch.yml
客户能够sniff集群的歇息,并加入到列表中的机器使用。在这样的情况下,请注意,使用的IP地址将是其它节点開始的("publish" address)。为了使用它,把client.transport.sniff设置true:
Settings settings =ImmutableSettings.settingsBuilder()
.put("client.transport.sniff", true).build();
TransportClient client = new TransportClient(settings);Other transport client levelsettings include:
client.transport.ignore_cluster_name
Set to true to ignore cluster name validation of connected nodes. (since 0.19.4)
client.transport.ping_timeout
The time to wait for a ping response from a node. Defaults to 5s.
client.transport.nodes_sampler_interval
How often to sample / ping the nodes listed and connected. Defaults to 5s.
原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-client
翻译欠佳,希望不会对大家造成误导
ElasticSearch的javaAPI之Client的更多相关文章
- Elasticsearch的javaAPI之percolator
Elasticsearch的javaAPI之percolator percolator同意一个在index中注冊queries,然后发送包括doc的请求,返回得到在index中注冊过的而且匹配doc的 ...
- elasticsearch的javaAPI之query
elasticsearch的javaAPI之query API the Search API同意运行一个搜索查询,返回一个与查询匹配的结果(hits). 它能够在跨一个或多个index上运行, 或者一 ...
- Elasticsearch的javaAPI之get,delete,bulk
Elsasticsearch的javaAPI之get get API同意依据其id获得指定index中的基于json document.以下的样例得到一个JSON document(index为twi ...
- Elasticsearch High Level Rest Client 发起请求的过程分析
本文讨论的是JAVA High Level Rest Client向ElasticSearch6.3.2发送请求(index操作.update.delete--)的一个详细过程的理解,主要涉及到Res ...
- Elasticsearch的javaAPI之query dsl-queries
Elasticsearch的javaAPI之query dsl-queries 和rest query dsl一样,elasticsearch提供了一个完整的Java query dsl. 查询建造者 ...
- elasticsearch java 客户端之Client简介
elasticsearch通过构造一个client对外提供了一套丰富的java调用接口.总体来说client分为两类cluster信息方面的client及数据(index)方面的client.这两个大 ...
- elasticsearch的javaAPI之index
Index API 原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html ...
- Elasticsearch【JAVA REST Client】客户端操作
ES系统作为集群,环境搭建非常方便简单. 现在在我们的应用中,如何对这个集群进行操作呢? 我们利用ES系统,通常都是下面的架构: 在这里,客户端的请求通过LB进行负载均衡,因为操作任何一个ES的实例, ...
- Elasticsearch的JavaAPI
获取客户端对象 public class App { private TransportClient client; //获取客户端对象 @Before public void getClinet() ...
随机推荐
- change_names
DC在储存网表时,有时会采用特殊的字符 比如表示总线BUS[7]-BUS[0] 会表示成\BUS[7] \BUS[6]...... 在compile命令之后,write命令之前 加上:chan ...
- Hamming correct
从数的最左边开始,并标记为1 将2的平方的位置留出来,做为校验位例如,8位2进制数10011010===>_ _ 1 _ 0 0 1 _ 1 0 1 0 位置1用来校验最右边的位位1的位置1 3 ...
- NPF
NPF是一个协议驱动.从性能方面来看,这不是最好的选择,但是它合理地独立于MAC层并且有权使用原始通信 (raw traffic).NPF是Winpcap的核心部分,它是Winpcap完成困难工作的组 ...
- js循环函数中的匿名函数和闭包问题(匿名函数要用循环中变量的问题)
js循环函数中的匿名函数和闭包问题(匿名函数要用循环中变量的问题) 一.总结 需要好好看下面代码 本质是因为匿名函数用到了循环中的变量,而普通方式访问的话,匿名函数的访问在循环之后,所以得到的i是循环 ...
- 11.2 Android显示系统框架_android源码禁用hwc和GPU
2. 修改tiny4412_Android源码禁用hwc和gpu(厂家不会提供hwc和gpu的源代码,没有源代码就没法分析了,因此在这里禁用该功能并用软件库实现)最终源码: git clone htt ...
- PHP unlink() 函数(删除文件)
PHP unlink() 函数(删除文件) 一.总结 unlink() 函数删除文件. 1.实例 $file = "test.txt"; if (!unlink($file)) 2 ...
- POJ 2785 4 Values whose Sum is 0 Hash!
http://poj.org/problem?id=2785 题目大意: 给你四个数组a,b,c,d求满足a+b+c+d=0的个数 其中a,b,c,d可能高达2^28 思路: 嗯,没错,和上次的 HD ...
- 4、linux下应用创建线程
1.linux创建线程之pthread_create 函数简介 pthread_create是UNIX环境创建线程函数 头文件 #include<pthread.h> 函数声明 int p ...
- HINTERNET应包含的头文件
#include <afxinet.h> DWORD status=0;DWORD dwLen=sizeof(DWORD); if(!HttpQueryInfo(hRequest,HTTP ...
- VS2010制作dll
一.为什么需要dll 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,如ATL.M ...