本文源碼:GitHub·點這裏 || GitEE·點這裏java
ES版本6.3.2,集羣名稱esmaster,虛擬機centos7。node
服務羣 | 角色劃分 | 說明 |
---|---|---|
en-master | master | 主節點:esnode1 |
en-node01 | slave | 從節點:esnode2 |
en-node02 | slave | 從節點:esnode3 |
ElasticSearch基礎功能和用法:git
在真正海量數據的業務場景中,ElasticSearch搜索引擎都是須要集羣化管理的,實時搜素幾十億的數據十分常見。github
配置文件spring
vim /opt/elasticsearch-6.3.2/config/elasticsearch.yml
主節點配置vim
# 集羣主節點配置 cluster.name: esmaster node.master: true # 節點名稱 node.name: esnode1 # 開發訪問 network.host: 0.0.0.0
從節點配置centos
注意這裏兩個從節點配置,node.name分別配置爲esnode2和esnode3便可。框架
# 集羣名稱 cluster.name: esmaster # 節點名稱 node.name: esnode2 # 開發訪問 network.host: 0.0.0.0 # 主節點IP discovery.zen.ping.unicast.hosts: ["192.168.72.133"]
內存權限elasticsearch
vim /etc/sysctl.conf # 添加內容 vm.max_map_count=262144 # 執行 sysctl -p
添加esroot用戶,並受權。分佈式
/opt/elasticsearch-6.3.2/bin/elasticsearch
單服務查看
ps -aux |grep elasticsearch
集羣狀態查看
http://localhost:9200/_cluster/health?pretty { "cluster_name" : "esmaster", # 集羣名稱 "status" : "green", # 綠:健康,黃:亞健康,紅:病態 "timed_out" : false, # 是否超時 "number_of_nodes" : 3, # 節點個數 }
dev環境
配置單個節點,選擇任意單節點,進行數據寫入測試。
spring: data: elasticsearch: # 集羣名稱 cluster-name: esmaster # 單節點 # cluster-nodes: en-master:9300 # cluster-nodes: en-node01:9300 cluster-nodes: en-node02:9300
test環境
連接集羣環境,進行數據讀取測試。
spring: data: elasticsearch: # 集羣名稱 cluster-name: esmaster # 集羣節點 cluster-nodes: en-master:9300,en-node01:9300,en-node02:9300
固然全部的操做均可以基於單節點或者集羣環境測試。
基於註解管理數據對象實例。
import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; @Document(indexName = "usersearchindex",type = "usersearch") public class UserSearch { //Id註解Elasticsearch裏相應於該列就是主鍵,查詢時可使用主鍵查詢 @Id private Long id; private String userId; private String userName; private String sex; }
提供一個數據查詢操做和數據寫入操做。
import com.esearch.cluster.entity.UserSearch; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service public class UserSearchServiceImpl implements UserSearchService { @Resource private UserSearchRepository userSearchRepository ; @Override public String esInsert(Integer num) { for (int i = 0 ; i < num ; i++){ UserSearch userSearch = new UserSearch() ; userSearch.setId(System.currentTimeMillis()); userSearch.setUserId("Name"+i); userSearch.setUserName("ZSan"+i); userSearch.setSex("Male"+i); userSearchRepository.save(userSearch) ; } return "success" ; } @Override public Iterable<UserSearch> esFindAll (){ return userSearchRepository.findAll() ; } }
這裏是基於Kibana組件作的集羣控制檯。
在discover面板中能夠查看列表數據,也能夠繼續搜索。
列表查詢
列表搜索
在dev_tools面板中能夠執行ElasticSearch相關命令。
查看集羣健康狀態
GET /_cat/health?v
查詢所有數據
GET _search { "query": { "match_all": {} } }
GitHub·地址 https://github.com/cicadasmile/data-manage-parent GitEE·地址 https://gitee.com/cicadasmile/data-manage-parent
推薦閱讀:數據源管理系列