編者按:ElasticSearch是一款分布式的搜索及分析引擎,在建立索引、搜索以及數據分析方面都有著非常優異的表現。本文筆者詳細介紹了該引擎的部署細節與如何應用。
ElasticSear ch能夠對所有類型數據進行實時的搜索及分析,無論是結構化或者非結構化的文本、數值數據、地理空間數據,ElasticSearch都能對數據進行存儲并建立一種能支持高速搜索的索引。
ElasticSearch不止能簡單地檢索信息,還可以整合信息以發現數據中的規律及趨勢。ElasticSearch的分布式特性使之能夠很好地適應數據和查詢量的不斷增加,除此之外,ElasticSearch還能在各種情形下高效、靈活地處理數據,例如:
在應用程序或者網站中添加搜索框;
存儲并分析日志、指標數據以及安全事件數據;
利用機器學習自動地、實時地為數據建立模型;
使用ElasticSearch作為存儲引擎實現業務工作流的自動化;
使用ElasticSearch作為地理信息系統管理、集成和分析空間信息數據;
使用ElasticSearch作為生物信息學研究工具存儲和處理遺傳信息數據。
近年來,人們使用Elast icSearch的創新方式越來越多,但是無論是在上述幾種情況下,還是在處理一些新的問題時,ElasticSearch處理數據、文檔以及索引的基本原理都是不變的。
ElasticSearch的有兩種部署方式,一種是創建一個托管在Elasticsearch Service上的服務,另一種是在本地的服務器上部署一個多節點的集群。在本文中,將詳細介紹如何在CentOS系統環境下創建一個擁有三個節點的ElasticSearch集群。
1.新建1臺裝有CentOS系統的虛擬機(主機IP為172.16.24.118),安裝好JDK并配置好環境變量,此過程不再贅述。
2.將下載好的ElasticS earch安裝包上傳到虛擬機中并解壓。(命令:#tar -zxvf elasticsearch-6.4.3.tar.gz)
3.修改elasticsearch-6.4.3/config/elasticsea rch.yml文件中以下內容:
network.host:172.16.2 4.117
http.port:9200
4.在/etc/sysctl.conf文件中添加以下內容:
vm.max_map_count=6553 60
并執行命令#sysctl -p。
5.在/etc/security/limits.conf文件中添加以下內容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
6.因為無法直接從root用戶啟動ElasticSearch,所以我們新建一個用戶user1并給用戶賦權,執行命令如下:
#groupadd es
#useradd user1 -g es-p 123456
切換到/usr/local目錄下并執行命令:
#chown -R user1:es elasticsearch-6.4.3
7.執行下列命令以關閉防火墻并啟動ElasticSearch
#systemctl stop firew alld.service
#cd/usr/local/elasticsearch-6.4.3/bin
#./elasticsearch
8.通過瀏覽器訪問http:/172.16.24.118:9200以驗證是否啟動成功。
9.將上述已經安裝好ElasticSearch的虛擬機克隆兩臺。(將IP地址分別修改為:172.16.24.117和172.16.24.116)
對elasticsearch-6.4.3/config/elasticsearch.yml文件進行以下修改。
cluster.name:myes(保證三個節點集群名稱是相同的)
node.name:node-1(確保每個節點名稱不一樣,其他兩臺分別為node-2,node-3)
network.host:172.16.2 4.118(當前服務器IP地址)
discovery.zen.ping.unicast.hosts:["172.16.24.118","172.16.24.117","172.16.24.116"]
discovery.zen.minimum_master_nodes:1
10.啟動三臺服務器的elasticsearch服務,并通過瀏覽器訪問http://172.16.24.118:9200/_cat/nodes?P retty來驗證集群是否創建成功。
11.下面我們對Elastic Search進行一些測試(為了方便起見,我們通過一款叫做postman的軟件進行測試)。
(1)通過向服務器發送下列HTTP請求以建立索引并定義類型:http://localhost:9200/local_mst_student_idx_1,返回。
(2)向新建的索引中添加數據。
(3)向elasticsearch發送查詢請求。
Elasticsearch把操作都封裝成了HTTP的API,用戶只需給Elasticsearch發送HTTP請求就能完成相關操作。除了用上述的方法安裝部署ElasticSearch以外,各位還可以嘗試用其他方式部署。
例 如,在Docker容 器中運行Elasticsearch、在Linux系統中用DEB包或者RPM包安裝Elasticsearch、利用Homebrew在macOS環境下安裝等。
大家可以前往ElasticS earch官方網站查看更多關于該軟件的安裝及使用方法介紹。