`

Elasticsearch java api——节点实例化

阅读更多

Elasticsearch java api——节点实例化

 

要连接到集群,首先要告诉集群:你是谁,你有什么特征。在es中体现为实例化节点。

es通过org.elasticsearch.node.NodeBuilder的build()或者node()方法实例化节点,build()创建节点而不启动,而node()方法等价于build().start(),即创建并启动。

首先实例化NodeBuilder,有两种方式,第一种是new,如下:

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = new NodeBuilder();  


第二种是使用NodeBuilder的工厂方法,NodeBuilder中有以下代码:

 

 

[java] view plaincopy
 
 
  1. public static NodeBuilder nodeBuilder() {  
  2.     return new NodeBuilder();  
  3. }  


所以可以直接通过以下代码实例化NodeBuilder:

 

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder();  


实例化后便可设置该node的特性,NodeBuilder本身自带了一些方法:

 

1. loadConfigSettings,是否加载配置文件。

你可以在classpath下创建一个elasticsearch.yml文件,然后在其中设置一些属性(参见分布式搜索Elasticsearch——配置),再把loadConfigSettings的值设置为true即可,代码如下:

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().loadConfigSettings(true);  


loadConfigSettings默认为true。

 

2. 是否只作为客户端,即不存储索引数据,默认值为false,代码如下所示:

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().client(true);  


3. 是否持有索引数据,默认值为true,代码如下所示:

 

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(true);  


client(boolean)和data(boolean)会有一定的关联,当client的值为true时,data的值默认为false,且不能改为true,否则会报错,即如下代码是不允许的:

 

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(true).client(true);  


当client的值为false时,data的值默认为true,而且改为false也不起作用,也即以下两行代码是等价的:

 

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(true).client(false);  
  2. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(false).client(false);  


4. 是否为本地节点,本地节点是指在JVM级别中的同级,当多个节点使用同一个JVM时,这些节点可以组合成一个集群,而非同一个JVM下的节点则不处于集群中,默认值为false:

 

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().local(true);  


5. 设置集群名,即该节点位于哪个集群下,默认值为elasticsearch:

 

 

[java] view plaincopy
 
 
  1. NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().clusterName("your name");  


若多个节点设置了同一个clusterName,则说明这几个节点位于同一个集群下。

 

6. 以Map的方式设置属性,NodeBuilder中有以下两个方法:

 

[java] view plaincopy
 
 
  1. /** 
  2.  * Explicit node settings to set. 
  3.  */  
  4. public NodeBuilder settings(Settings.Builder settings) {  
  5.     return settings(settings.build());  
  6. }  
  7.   
  8. /** 
  9.  * Explicit node settings to set. 
  10.  */  
  11. public NodeBuilder settings(Settings settings) {  
  12.     this.settings.put(settings);  
  13.     return this;  
  14. }  


这两个方法允许你通过Map的方法设置属性,如以下代码所示:

 

 

[java] view plaincopy
 
 
  1. Map<String, String> settingMap = new HashMap<String, String>();  
  2. settingMap.put("node.client""false");  
  3. settingMap.put("node.data""true");  
  4. settingMap.put("node.local""true");  
  5. settingMap.put("cluster.name""clasterName");  
  6. settingMap.put("node.name""geloin");  
  7.   
  8. Settings settings = ImmutableSettings.settingsBuilder().put(settingMap).build();  
  9. Node node = NodeBuilder.nodeBuilder().settings(settings).node();  


org.elasticsearch.common.settings.Settings是一个接口,org.elasticsearch.common.settings.ImmutableSettings才是它的实现类。

 

上一篇文章分布式搜索Elasticsearch——配置说了一些es的配置,你可以都设置在上述代码中的map中。

综上所述,我们对设置Node的属性有以下结论:

1. 使用配置文件方式,即在classpath下建立一个elasticsearch.yml文件,然后把分布式搜索Elasticsearch——配置里面提到的配置加入到此文件中,再保持loadConfigSettings为true即可;

2. 使用Map方式,然后用NodeBuilder.nodeBuilder().settings(settings);

3. 使用NodeBuilder自带了client、data、local、clusterName方法,不过NodeBuilder自带的方法有限,所以可能还需要配合以上提到的两种方式才能达到你的要求。
至于如何选择,那就看你自己了。

 

 使用java client有以下几种方式:
        (1) 在一个已经存在的集群中,执行标准的index、get、delete或search操作;
        (2) 在一个正在运行的集群中,执行管理任务;
        (3) 在你的应用中运行集成的Elasticsearch或者当你执行单元测试或集成测试时启动全部的节点时;
        获取Client对象很简单,最常用的方法是:
        (1) 创建一个作为集群中节点的嵌入式Node;
        (2) 从第一步创建的嵌入式Node中,请求一个Client;
        另一种方式是创建一个连接到集群中的TransportClient。
        请注意:我们推荐设置客户端和集群端的版本号为一致,因为当两者版本号不一致时,将会出现很多不协调的问题。
        当你启动一个节点时,它会自动加入同网段的ES集群,前提是ES的集群名(cluster.name)参数为一致(该参数默认值为elasticsearch,你也可在/src/main/resources/elasticsearch.yml或者使用代码更改集群名)。
        通过TransportClient这个接口,我们可以不启动节点就可以和es集群进行通信,它需要指定es集群中其中一台或多台机的ip地址和端口。

        当然,若无特殊情况,我们通常的创建Client的方式如下所示:

 

 

[java] view plaincopy
 
 
  1. NodeBuilder builder = NodeBuilder.nodeBuilder();  
  2. // 设置builder,如builder.client(false)等,具体参见<a target="_blank" href="http://blog.csdn.net/geloin/article/details/8446895">http://blog.csdn.net/geloin/article/details/8446895</a>  
  3. Client client = builder.client();  

 

分享到:
评论

相关推荐

    ElasticSearch Java API 中文文档

    标签《ES Java API 中文文档》强调了文档的内容属性,它属于ElasticSearch的一个重要组成部分,即用Java语言进行数据交互和操作的应用程序接口部分。 从部分内容中可以提取出以下知识点: 1. **Transport Client**...

    基于Elasticsearch Java API的参考手册

    **Elasticsearch Java API详解** Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,广泛应用于大数据领域的实时分析和信息检索。Java API是Elasticsearch官方提供的与Elasticsearch服务器进行交互的...

    ElasticSearch java API

    ElasticSearch 官方 java API

    elasticsearch java api

    **Elasticsearch Java API**是Elasticsearch官方提供的用于与Elasticsearch服务器进行交互的Java客户端库。在Java应用程序中,我们通常会使用这个API来创建、查询、更新和删除索引中的数据。Elasticsearch 2.3版本的...

    ElasticSearch Java API

    **Elasticsearch Java API**是Elasticsearch与Java应用程序交互的主要工具,它允许开发者在Java环境中无缝地创建、管理和查询Elasticsearch索引。Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,用于...

    elasticsearch java api 离线文档

    **Elasticsearch Java API 离线文档** Elasticsearch 是一个开源的全文搜索引擎,它提供了高度可扩展的、实时的搜索与分析引擎服务。Java API 是 Elasticsearch 提供的用于与集群交互的主要接口,允许开发者在 Java...

    elasticsearch离线JAVA API文档下载

    **Elasticsearch离线Java API文档详解** Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据分析、日志分析和全文检索等场景。它的Java API是开发人员与Elasticsearch进行交互的主要工具,提供了...

    elasticsearch java操作的api实例

    在Java环境中操作Elasticsearch,我们通常会利用官方提供的Java API,这是一个非常全面且强大的工具集,让我们能够方便地进行索引管理、查询、过滤、分组和映射设置等操作。 首先,让我们详细了解如何使用Java API...

    基于Elasticsearch2.1.1的JavaAPI基本操作代码示例

    在这个基于Elasticsearch 2.1.1的Java API基本操作代码示例中,我们将探讨如何利用Java API进行常见的数据操作,如索引创建、文档插入、查询以及更新。 首先,为了使用Elasticsearch的Java API,我们需要在项目中...

    JAVA实现ElasticSearch的简单实例

    2. **Java API**:Elasticsearch提供了Java REST客户端,使得开发者可以直接通过Java代码与ES集群进行交互。这个API简化了与ES通信的复杂性,并且性能高效。 3. **Elasticsearch安装与配置**:在开始编写Java程序...

    ElasticSearch Java API 1.5.chm

    ElasticSearch Java API 1.5.chm

    Elasticsearch Java api 工具类

    Elasticsearch Java api 工具类,包括增删改查索引,增删改查数据等代码,欢迎下载

    Elasticsearch5.x Java API手册

    Elasticsearch 5.x 版本的 Java API 手册是开发者进行 Elasticsearch 相关开发的重要参考资料。Elasticsearch 是一个流行的开源全文搜索引擎,广泛应用于数据检索、分析和实时数据存储。Java API 提供了与 Elastic...

    ES(elasticSearch6.4.0)之java API源码demo-完整注释版

    ES(elasticSearch6.4.0)之java API源码demo-完整注释版,本版本为上一demo版本升级版,封装了ES的javaAPI,支持了模糊查询,排序查询,解析,分页查询等功能,如果有问题请留言。我会及时回复。

    Elasticsearch Java API 手册.zip

    8. **实时监控**:通过Java API获取集群状态、节点信息、索引统计等,以便实时监控Elasticsearch的运行情况。 9. **分布式特性**:Elasticsearch作为分布式系统,理解其分片和副本机制,以及如何在Java API中进行...

    elasticsearch5.6以上version通用java API

    在"elasticsearch5.6以上version通用java API"中,我们将会探讨如何利用Java编写工具类,以覆盖更全面的操作,如映射创建、批量插入、聚合查询以及模糊和精确查询。 1. **映射创建**:Elasticsearch的映射(Mapping...

    elasticsearch-6.2.3-API文档-中文版.zip

    标签:elasticsearch、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

Global site tag (gtag.js) - Google Analytics