基本介绍
任何时候我们说启动一个ElasticSearch(简称ES,后续所说的ES就是指ElasticSearch)服务其实就是启动一个ES节点,而不同的节点可以构成一个ES集群,当你启动一个单节点的时候,我们可以认为是启动一个只有一个ES节点的简单集群。
节点,集群, 分片, 索引的关系
引用官网的一张图,下图是一个由3个节点NODE1, NODE2和NODE3构成的集群,每个节点就是一个ES实例,即一个JAVA进程。即集群是由一个或多个节点组成的,而每个节点上可以有1个或多个分片(如下图的P1,P2, P0,R0, R1, R2),其中分片又分为主分片(如P1,P2,P0)和副本分片(R0,R1,R2),而索引是指向一个或者多个物理分片的逻辑命名空间。
##集群节点类型
节点类型 | 参数设置 | 描述 |
Master-eligible节点 | node.roles: [ master ] | 具有master角色的节点,可参与master节点的选举,一旦成为master节点即可控制整个集群 |
Data节点 | node.roles: [ data ] | 可以保存数据的节点,主要负责存放分片数据 |
Content data节点 | node.roles: [ data_content ] | |
Ingest节点 | node.roles: [ ingest ] | 可以看作是数据前置处理转换的节点,支持 pipeline管道 设置,可以使用 ingest 对数据进行过滤、转换等操作,类似于 logstash 中 filter 的作用,功能相当强大。 |
Transform节点 | node.roles: [ transform, remote_cluster_client ] | 用于执行Transforms和处理transform API请求 |
Remote-eligible节点 | node.roles: [ remote_cluster_client ] | 作为跨集群客户端节点去连接远程的ES集群 |
Machine learning节点 | node.roles: [ ml, remote_cluster_client] | 用来执行脚本和处理机器学习相关API请求 |
Coordinating only节点 | node.roles: [ ] | 每个node都是一个coordinating node。如果我们的节点不充当其他角色,那么它就是一个纯粹的coordinating node,仅仅用于接收客户端的请求,同时进行请求的转发和合并 |
节点数据路径设置
Data节点和Master-eligible节点需要知道分片,索引和集群的元数据存放路径,而这个存放这些元数据的路径就是我们所说的节点数据路径,可以通过path.data来指定,默认情况下是$ES_HOME/data。也可以通过修改 elasticsearch.yml文件来设置其他路径,如下:
当然我们也可以通过ES节点启动时在命令行启动参数设置,具体如下: