博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ElasticSearch的javaAPI之Client
阅读量:6713 次
发布时间:2019-06-25

本文共 3407 字,大约阅读时间需要 11 分钟。

翻译的原文

翻译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 startupNode node = nodeBuilder().node();Client client = node.client();// on shutdownnode.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();

使用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 startupNode node = nodeBuilder().client(true).node();Client client = node.client();// on shutdownnode.close();

还有一个常见方法启动节点和使用client单元/集成測试。在这样的情况下,我们要開始一个“local”节点(与“local”的discovery and transpor)。再次,这仅仅是一个简单的设置启动节点时。注意,“local”在这里是指当地的JVM(嗯,实际上的类装载器),这意味着两个本地server开在同样的JVM,组成一个集群。

importstatic org.elasticsearch.node.NodeBuilder.*;// on startupNode node = nodeBuilder().local(true).node();Client client = node.client();// on shutdownnode.close();

 

transport  client

TransportClient 使用 transport module远程连接elasticsearch集群,它不增加群集,但仅仅会有一个或多个初始传输地址和与集群交流对每一个动作robin fashion(尽管大多数行动将可能是“two hop”操作)。

// on startupClient client = new TransportClient()        .addTransportAddress(new InetSocketTransportAddress("host1", 9300))        .addTransportAddress(new InetSocketTransportAddress("host2", 9300));// on shutdownclient.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://pahlo.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
购物商城图片放大镜效果
查看>>
我的友情链接
查看>>
Maven依赖包
查看>>
去除chrome中input的黄底色
查看>>
Hyper-v之第2代虚拟机
查看>>
spring常用属性配置
查看>>
友盟报错 java.lang.NoClassDefFoundError: com.umeng.analytics.MobclickAgent
查看>>
【SNMP案例----简单网络管理协议】
查看>>
Java Map
查看>>
Deprecated:function eregi() is deprecated in /usr/local/apache/libraries/lib_lang.php on line 8
查看>>
linux生成https的key和csr文件
查看>>
Zabbix 之监控Juniper防火墙与深信服设备以及NetScaler设备
查看>>
小博浅谈MVC
查看>>
前端技术学习之选择器(四)
查看>>
Ubuntu与windows的远程控制/远程桌面
查看>>
ssh-copy-id命令解析
查看>>
自定义View的宽高设定
查看>>
进程打开的文件句柄数量超过系统默认值1024,就会提示“too many files open”信息...
查看>>
Linux下用ifconfig命令设置IP、掩码、网关
查看>>