Elasticsearch 3 不同的节点类型

Submitted by Lizhe on Thu, 01/07/2021 - 12:29

Elasticsearch 集群中为了良好 可用性和性能,需要明确各个节点的角色

 

node.master: true/false

node.data: true/false

node.ingest: true/false

主节点:

主节点是集群的主要管理者,负责分片管理、保持集群状态,并且是每个索引操作的主要控制者。

如果主节点处于过载状态,所有集群都会受到性能损失。速度变慢或者节点阻塞。

当集群 master 候选数量不小于 3 个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题 

 

数据节点:

node.data 参数允许将数据存储在该节点中。数据节点是负责 索引和搜索数据的 worker

 

混合master和data参数可以得到

master data  
true true 默认节点。是可以包含数据的主节点
false true 该节点永远不会成为主节点,只用来保存数据。集群的 workhouse
true false 该节点仅用作主节点。以避免存储任何数据并拥有可用资源。集群的协调器
false false 协调器节点。用于充当搜索负载均衡器,从节点中获取数据,汇总结果等,协调器节点,也叫做 客户端节点

 

这里稍微解释一下协调器节点

协调器节点可以用来提供与集群的安全通信,降低查询和聚合带来的系统压力

  1. 协调器节点可以安全的关闭、终止而不会引起任何问题。它不管理集群也不包含数据,因此不会由于它的故障而导致其他问题
  2. 如果用户执行的聚合过大,节点可能会崩溃或者不稳定(新版本es中包含了断路器),协调器节点重载不会引发其他问题
  3. 如果将协调器(客户端)节点嵌入应用程序中,则数据的往返次数会减少,从而可以加快应用程序的运行速度
  4. 开发人员可以通过添加协调器节点以平衡搜索和聚合的吞吐量,而无需在集群中生成更改和数据重定位

这里还有一个特殊种类是 采集器节点

Elasticsearch的主要目标是 索引、搜索和分析,但是通常需要先对文档进行修改或者增强,然后再将其存储在elasticsearch中

node.ingest: true

采集节点的典型应用场景是

 

预处理字符串

NLP处理文本

ML处理文本

转换世界格式

转换IP对应的地址

等等

Elasticsearch的默认配置是将节点设置为 采集节点

在协调器节点上,使用采集节点是一种在不损害集群安装的情况下向Elasticsearch提供功能的方法。

最佳做法是在主节点和数据节点上禁用此功能。一般来说,协调器节点也可以用于采集部分。

202101070000

下面是一个协调节点+采集节点

 

cluster.name: lizhe-es
node.name: node-4
node.master: false
node.data: false
node.ingest: true
path.data: /data/es-data
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.204.132", "192.168.204.133","192.168.204.134"]
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true
http.cors.allow-origin: "*"
 

开启之后可以看到多了一个节点

20210107221848 

尝试使用这个节点进行查询

20210107221912

 

 

from elasticsearch import Elasticsearch
from datetime import *

es = Elasticsearch("192.168.204.135:9200")

def Get_Data_By_Body():
    doc = {'query': {'match_all': {}}}
    _searched = es.search(index="lizhe-index", body=doc)

    for hit in _searched['hits']['hits']:
        print(hit['_source'])


Get_Data_By_Body()

以上