單機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"); } }