为什么80%的码农都做不了架构师?>>>   

要连接到集群,首先要告诉集群:你是谁,你有什么特征。在 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.nodeBuilder();

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

1、loadConfigSettings ,是否家在配置文件。

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

NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().loadConfigSettings(true);

loadConfigSettings 默认为 true.

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

NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().client(true);

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

NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder().data(true);

client(boolean) 和 data(boolean) 是有一定关联的,

当 client 为 true 时候, data 默认值为 false,且不能改为 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 set*/
public NodeBuilder settings(Settings settings){this.settings.put(settings);return this;
}

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

Map<String,String> settingsMap = new HashMap<String,String>();
settingsMap.put("node.client","false");
settingsMap.put("node.data","true");
settingsMap.put("node.local","true");
settingsMap.put("cluster.name","clusterName");
settingsMap.put("node.name","geloin");Settings settings = ImmutableSettings.settingsBuilder().put(settingsMap).build();
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 自带方法有限,所以可能还需要配合以上提到的两种方式才能达到要求。

转载于:https://my.oschina.net/exit/blog/805163

分布式搜索 Elasticsearch —— 节点实例化相关推荐

  1. 分布式搜索elasticsearch搜索功能【深入】

    elasticsearch搜索功能[深入] 分布式搜索elasticsearch搜索功能[深入] 1.数据聚合 1.1 聚合的种类 1.2 DSL实现聚合 1.2.1 Bucket聚合 1.2.2 M ...

  2. 分布式搜索elasticsearch搜索功能【进阶】

    elasticsearch搜索功能 分布式搜索elasticsearch搜索功能 1.DSL查询文档 1.1 DSL查询分类 1.2 全文检索查询 1.3 精准查询 1.4 地理坐标查询 1.5 组合 ...

  3. 黑马程序员--分布式搜索ElasticSearch学习笔记

    写在最前 黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列M ...

  4. 分布式搜索elasticsearch 索引文档的增删改查 入门

    分布式搜索elasticsearch 索引文档的增删改查 入门 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful ...

  5. 分布式搜索elasticsearch

    为什么80%的码农都做不了架构师?>>>    介绍下es的几个概念: cluster     代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主 ...

  6. 分布式搜索elasticsearch配置文件详解

    2019独角兽企业重金招聘Python工程师标准>>> elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml, ...

  7. .NET 分布式 搜索 elasticsearch.net NEST

    我们公司(电商)目前使用 elasticsearch.对于一个3亿数据量索引查询速度都是在毫秒级别,不过实现都是基于JAVA的client. 本人因为是.NET出身,虽然现在做JAVA.但是对.NET ...

  8. 分布式搜索elasticsearch集群监控工具bigdesk

    2019独角兽企业重金招聘Python工程师标准>>> bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu.内存使用情况,索 ...

  9. 怎么配置linux中es搜索的主机名,分布式搜索elasticsearch中文分词集成

    elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介 ...

最新文章

  1. 彻底解决_OBJC_CLASS_$_某文件名“, referenced from:问题
  2. 校园网站建设策划方案离不开三方面
  3. 题目1195:最长最短文本
  4. 【云上ELK系列】Logstash迁移Elasticsearch数据方法解读
  5. 【Nutch2.2.1基础教程之3】Nutch2.2.1配置文件
  6. [react] 状态管理器解决了什么问题?什么时候用状态管理器?
  7. 悦虎144固件,华强北二代悦虎144固件,1562M芯片144固件
  8. 高职计算机专业用什么软件,【计算机专业论文】高职计算机专业CAD软件教学思考(共4772字)...
  9. php 怎么解析文本,PHP解析自定义纯文本数据库
  10. 大数据_MapperReduce_Hbase的优化_RowKey设计原则---Hbase工作笔记0028
  11. 查询sql执行计划_使用SQL执行计划进行查询性能调整
  12. 如何退出while(cinvalue)的循环
  13. 【Linux学习】vim编辑器的使用
  14. linux安全加固-三级等保(一)
  15. Java基础——集合List+Set+泛型+Map
  16. 产品快速迭代的五大要点
  17. 批处理 获取计算机硬件信息,检测硬件的批处理命令,检测硬件bat,一键获取电脑硬件信息...
  18. 构建具有丰富功能的交互式 Kiosk
  19. 矩阵求和 c语言 简单易懂
  20. 一次ORA-3136的处理

热门文章

  1. appimage文件怎么安装_bauh:在一个界面中管理 Snap、Flatpak 和 AppImage | Linux 中国...
  2. 查询oracle表上重复的数据库,如何确定Oracle数据库表重复的记录
  3. 机器学习之 weka学习(四)
  4. iOS核心动画之CALayer(1)
  5. python 运行当前目录下的所有文件
  6. iOS开发 iOS10兼容访问http
  7. [邻接表] 学习邻接表的表示方法+BFS
  8. STL vector容器
  9. AntD 官网样例 InputRef报错原因
  10. vue3.0 AntDesignVue2.0 table的rowkey报错问题解决方法