要连接到集群,首先要告诉集群:你是谁,你有什么特征。在es中体现为实例化节点。
es通过org.elasticsearch.node.NodeBuilder的build()或者node()方法实例化节点,build()创建节点而不启动,而node()方法等价于build().start(),即创建并启动。
首先实例化NodeBuilder,有两种方式,第一种是new,如下:
- NodeBuilder nodeBuilder = new NodeBuilder();
第二种是使用NodeBuilder的工厂方法,NodeBuilder中有以下代码:
- public static NodeBuilder nodeBuilder() {
- return new NodeBuilder();
- }
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder();
实例化后便可设置该node的特性,NodeBuilder本身自带了一些方法:
1. loadConfigSettings,是否加载配置文件。
你可以在classpath下创建一个elasticsearch.yml文件,然后在其中设置一些属性(参见分布式搜索Elasticsearch——配置),再把loadConfigSettings的值设置为true即可,代码如下:
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().loadConfigSettings(true);
2. 是否只作为客户端,即不存储索引数据,默认值为false,代码如下所示:
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().client(true);
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(true);
client(boolean)和data(boolean)会有一定的关联,当client的值为true时,data的值默认为false,且不能改为true,否则会报错,即如下代码是不允许的:
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(true).client(true);
当client的值为false时,data的值默认为true,而且改为false也不起作用,也即以下两行代码是等价的:
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(true).client(false);
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(false).client(false);
4. 是否为本地节点,本地节点是指在JVM级别中的同级,当多个节点使用同一个JVM时,这些节点可以组合成一个集群,而非同一个JVM下的节点则不处于集群中,默认值为false:
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().local(true);
5. 设置集群名,即该节点位于哪个集群下,默认值为elasticsearch:
- NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().clusterName("your name");
若多个节点设置了同一个clusterName,则说明这几个节点位于同一个集群下。
6. 以Map的方式设置属性,NodeBuilder中有以下两个方法:
- /**
- * Explicit node settings to set.
- */
- public NodeBuilder settings(Settings.Builder settings) {
- return settings(settings.build());
- }
- /**
- * Explicit node settings to set.
- */
- public NodeBuilder settings(Settings settings) {
- this.settings.put(settings);
- return this;
- }
- Map<String, String> settingMap = new HashMap<String, String>();
- settingMap.put("node.client", "false");
- settingMap.put("node.data", "true");
- settingMap.put("node.local", "true");
- settingMap.put("cluster.name", "clasterName");
- settingMap.put("node.name", "geloin");
- Settings settings = ImmutableSettings.settingsBuilder().put(settingMap).build();
- Node node = NodeBuilder.nodeBuilder().settings(settings).node();
上一篇文章分布式搜索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的方式如下所示:
- NodeBuilder builder = NodeBuilder.nodeBuilder();
- // 设置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>
- Client client = builder.client();
相关推荐
标签《ES Java API 中文文档》强调了文档的内容属性,它属于ElasticSearch的一个重要组成部分,即用Java语言进行数据交互和操作的应用程序接口部分。 从部分内容中可以提取出以下知识点: 1. **Transport Client**...
**Elasticsearch Java API详解** Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,广泛应用于大数据领域的实时分析和信息检索。Java API是Elasticsearch官方提供的与Elasticsearch服务器进行交互的...
ElasticSearch 官方 java API
**Elasticsearch Java API**是Elasticsearch官方提供的用于与Elasticsearch服务器进行交互的Java客户端库。在Java应用程序中,我们通常会使用这个API来创建、查询、更新和删除索引中的数据。Elasticsearch 2.3版本的...
**Elasticsearch Java API**是Elasticsearch与Java应用程序交互的主要工具,它允许开发者在Java环境中无缝地创建、管理和查询Elasticsearch索引。Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,用于...
**Elasticsearch Java API 离线文档** Elasticsearch 是一个开源的全文搜索引擎,它提供了高度可扩展的、实时的搜索与分析引擎服务。Java API 是 Elasticsearch 提供的用于与集群交互的主要接口,允许开发者在 Java...
**Elasticsearch离线Java API文档详解** Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据分析、日志分析和全文检索等场景。它的Java API是开发人员与Elasticsearch进行交互的主要工具,提供了...
在Java环境中操作Elasticsearch,我们通常会利用官方提供的Java API,这是一个非常全面且强大的工具集,让我们能够方便地进行索引管理、查询、过滤、分组和映射设置等操作。 首先,让我们详细了解如何使用Java API...
在这个基于Elasticsearch 2.1.1的Java API基本操作代码示例中,我们将探讨如何利用Java API进行常见的数据操作,如索引创建、文档插入、查询以及更新。 首先,为了使用Elasticsearch的Java API,我们需要在项目中...
2. **Java API**:Elasticsearch提供了Java REST客户端,使得开发者可以直接通过Java代码与ES集群进行交互。这个API简化了与ES通信的复杂性,并且性能高效。 3. **Elasticsearch安装与配置**:在开始编写Java程序...
ElasticSearch Java API 1.5.chm
Elasticsearch Java api 工具类,包括增删改查索引,增删改查数据等代码,欢迎下载
Elasticsearch 5.x 版本的 Java API 手册是开发者进行 Elasticsearch 相关开发的重要参考资料。Elasticsearch 是一个流行的开源全文搜索引擎,广泛应用于数据检索、分析和实时数据存储。Java API 提供了与 Elastic...
ES(elasticSearch6.4.0)之java API源码demo-完整注释版,本版本为上一demo版本升级版,封装了ES的javaAPI,支持了模糊查询,排序查询,解析,分页查询等功能,如果有问题请留言。我会及时回复。
8. **实时监控**:通过Java API获取集群状态、节点信息、索引统计等,以便实时监控Elasticsearch的运行情况。 9. **分布式特性**:Elasticsearch作为分布式系统,理解其分片和副本机制,以及如何在Java API中进行...
在"elasticsearch5.6以上version通用java API"中,我们将会探讨如何利用Java编写工具类,以覆盖更全面的操作,如映射创建、批量插入、聚合查询以及模糊和精确查询。 1. **映射创建**:Elasticsearch的映射(Mapping...
标签:elasticsearch、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。