单机es能够用,没毛病,可是有一点咱们须要去注意,就是高可用是须要关注的,通常咱们能够把es搭建成集群,2台以上就能成为es集群了。集群不只能够实现高可用,也能实现海量数据存储的横向扩展。
以下图:左边每一个索引主备分片都会分配在三台服务器上的不一样节点上面,右图粗方框表示主分片,细节点表示备节点。java
# 配置集群名称,保证每一个节点的名称相同,如此就能都处于一个集群以内了 cluster.name: es-cluster # 每个节点的名称,必须不同 node.name: es-node1 # http端口(使用默认便可) http.port: 9200 # 主节点,做用主要是用于来管理整个集群,负责建立或删除索引,管理其余非master节点(至关于企业老总) node.master: true # 数据节点,用于对文档数据的增删改查 node.data: true # 集群列表 discovery.seed_hosts: ["192.168.1.184", "192.168.1.185", "192.168.1.186"] # 启动的时候使用一个master节点,未指定ES会进行选举 cluster.initial_master_nodes: ["es-node1"]
more elasticsearch.yml | grep ^[^#]
discovery.zen.minimum_master_nodes=(N/2)+1
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
spring: data: elasticsearch: cluster-name: es-cluster cluster-nodes: 192.168.1.184:9300,192.168.1.185:9300,192.168.1.186:9300
@Configuration public class ESConfig { /** * 解决netty引发的issue */ @PostConstruct void init() { System.setProperty("es.set.netty.runtime.available.processors", "false"); } }