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: yourclustername

 Or 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

翻译欠佳,希望不会对大家造成误导

时间: 2024-08-28 04:49:54

ElasticSearch的javaAPI之Client的相关文章

elasticsearch的javaAPI之query

elasticsearch的javaAPI之query API the Search API允许执行一个搜索查询,返回一个与查询匹配的结果(hits). 它可以在跨一个或多个index上执行, 或者一个或多个types. 查询可以使用提供的 query Java API 或filter Java API . 搜索请求的主体是建立使用 SearchSourceBuilder上. 这里有一个例子: import org.elasticsearch.action.search.SearchRespon

Elasticsearch的javaAPI之facet,count,delete by query

Elasticsearch的javaAPI之count count API允许轻松地执行一个查询,获得匹配的数量,可以跨越一个或多个index ,一个或多个type. import static org.elasticsearch.index.query.xcontent.FilterBuilders.*; import static org.elasticsearch.index.query.xcontent.QueryBuilders.*; CountResponse response =

Elasticsearch的javaAPI之get,delete,bulk

Elsasticsearch的javaAPI之get get API允许根据其id获得指定index中的基于json document.下面的例子得到一个JSON document(index为twitter,type为tweet,id为价值1) GetResponse response = client.prepareGet("twitter", "tweet", "1")         .execute()         .actionG

elasticsearch java 客户端之Client简介

elasticsearch通过构造一个client体现对外提供了一套丰富的java调用接口.总体来说client分为两类cluster信息方面的client及数据(index)方面的client.这两个大类由可以分为普通操作和admin操作两类.以下是client的继承关系(1.5版本,其它版本可能不一样): 通过这个继承关系图可以很清楚的了解client的实现,及功能.总共有三类即client, indicesAdminClient和ClusterAdminClient.它都有自己的实现类,但

Elasticsearch High Level Rest Client 发起请求的过程分析

本文讨论的是JAVA High Level Rest Client向ElasticSearch6.3.2发送请求(index操作.update.delete--)的一个详细过程的理解,主要涉及到Rest Client如何选择哪一台Elasticsearch服务器发起请求. maven依赖如下: <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-

elasticsearch的javaAPI之index

Index API 原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html index API允许你将JSON document转换为一个特定的index,使它便于搜索操作. 生成JSON文档: 有几种不同的方法生成一个JSON document: 手动使用 byte[] 或String 使用一个map来等效转换为JSON 使用第三方库来将beans装换(如Jackson

Elasticsearch的javaAPI之percolator

percolator允许一个在index中注册queries,然后发送包含doc的请求,返回得到在index中注册过的并且匹配doc的query //This is the query we're registering in the percolator QueryBuilder qb = termQuery("content", "amazing"); //Index the query = register it in the percolator clien

Elasticsearch的javaAPI之query dsl-queries

和rest query dsl一样,elasticsearch提供了一个完整的Java query dsl. 查询建造者(factory)是 QueryBuilders . 一旦准备好您的查询,您可以使用query api. 如何使用QueryBuilders?仅仅就是加入下面的包: import org.elasticsearch.index.query.QueryBuilders.*; 请注意,您可以轻松地打印(又名调试) 查询生成的JSON,用 toString()方法 QueryBuil

Elasticsearch的javaAPI之Query DSL-filters

和REST query dsl一样,elasticsearch提供了一个完整的Java query dsl. 工厂过滤器建造者是FilterBuilders 一旦准备好您的查询,就可以使用query api. 如何构建查询?使用FilterBuilders,导入它们在你的类: import org.elasticsearch.index.query.FilterBuilders.*; 请注意,在FilterBuilder对象上可以轻松地打印(又名调试) 查询生成的JSON,用 toString(