首页 > 代码库 > ElasticSearch的javaAPI之Client
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)。
此外,在客户端的操作,可以批量处理。
注意: 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是容易的。下面最常用的方式:
1.创建一个节点( acts as a node within a cluster)
2.从节点请求client(from your embedded Node)另一种方式是通过创建一个TransportClient连接到群集。
Important:
请注意,我们建议使用同一版本的客户端和集群。因为你可能遇到一些不兼容的问题,当混用不同版本。
Node 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();使用客户端的好处是操作是自动路由到节点的操作需要执行,不执行“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();另一个常见方法启动节点和使用客户端单元/集成测试。在这种情况下,我们要开始一个“local”节点(与“local”的discovery and transpor)。再次,这只是一个简单的设置启动节点时。注意,“local”在这里是指当地的JVM(嗯,实际上的类装载器),这意味着两个本地服务器开在相同的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