关于Elasticsearch
我已经在Hatena博客上发布,但我也在这里写了一篇。
在介绍 Elasticsearch 的搭建方法之前,我想详细描述一下。
关于Elasticsearch的组成要素
https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html 可查询到有关 Elasticsearch 基本概念的详细资料。

(1) “实例(instance)”
实例与RHEL等操作系统是同义词。
实例名称等同于主机名。
(2)节点(node)
节点是Elasticsearch的进程(JVM)。您可以在一个实例中启动多个节点。
节点名称用于标识进程。
关于节点的详细描述将另外说明。
(3)分片(shard)
分片是将保存在Elasticsearch中的数据(索引)进行分割和分布式存储的机制。
根据数据保护机制,可以将数据以主数据(primary)和副本数据(replica)的形式进行分布式存储。
如果主数据发生损坏,可以通过副本数据进行数据恢复。
默认情况下,配置为5个主数据/1个副本。
建议每个节点配置600个分片,不要超过1,000个分片。
(4)索引(index)
虽然图中没有说明,但存储在Elasticsearch中的数据被称为索引。
(5)集群
这是将多个节点汇聚在一起形成一个Elasticsearch集群的方式。
可以将多个节点聚合在一起。
关于节点
进一步详细解释有关节点的内容。
https://www.elastic.co/guide/zh/elasticsearch/reference/current/modules-node.html
节点的类型
节点将被分成四个部分。
(1) 可作为主节点的节点
从可作为主节点的节点中自动选择一个作为主节点。
其余可作为主节点的节点将作为备份节点以应对主节点故障。
主节点负责执行Elasticsearch的管理和控制。
(2)数据节点
数据节点是用于存储数据的节点,通过多个该节点的存在,可以实现分布式配置。
此外,还有一种分层分类称为热/暖,似乎可以实现层次化的功能。(对于这一点我理解不够清楚。。)
(3) 客户端节点(Ingest节点)
虽然日本语名称有些可疑,但这个节点是专门用来接收API请求的节点。
因此,它不负责管理或存储数据。
API的发行和Kibana的连接都将指定到这个节点。为了使主节点和数据节点能够专注于各自的角色,推荐不将其用作API等的入口。
(4) 调整节点(部落节点)
中文名称由我随意起的……似乎用于多集群配置的节点。
由于我只有单一集群的经验,对于这个节点也不太理解……
关于Java的堆大小
请点击此链接获取有关堆大小的信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
首先,建议将物理内存的一半以下分配给Elasticsearch。
建议在操作系统上禁用交换空间,或者在配置文件或启动参数中禁用交换空间。
需要进行最小值和最大值的描述,但是建议两者都输入相同的值。
根据节点类型的不同,分配的内存大小也会有所不同。
(1) 给予4到8GB的分配的主节点(Master node)、可作为主节点的节点(Master-eligible node)
(2)数据节点(Data node)
建议分配不超过30GB。
(3) 客户端节点(Ingest节点)
分配4至8GB的内存。
关于通信端口的问题。

(1) 节点间的通信
Elasticsearch的分布式配置处理等是通过内部通信端口Transport进行交互的。
如果引入了X-Pack的付费版,可以对这种通信进行加密。
端口使用9300至9400,如果不特别指定,Elasticsearch会自动分配端口。
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-transport.html
(2) 外部通信
我们可以通过API或者Kibana来使用http端口接收外部通信。
一旦安装了X-Pack的付费版本,我们就可以对这种通信进行加密。
端口范围是9200到9300,如果没有特别指定,Elasticsearch会自动分配端口。
更多详情请参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html