ElasticSearch學習之一:基礎知識+單節點/集羣搭建

一、ES相關知識

ES基於RESTful web接口並且構建在Apache lucene之上的開源分佈式搜索引擎。同時ES是一個分佈式文檔數據庫,每個字段均可被索引、每個字段數據均可被搜索,能夠橫向擴展數以百計的服務器存儲以及處理PB級的數據。

1. 可以在極短時間內存儲、搜索和分析大量的數據

2. 通常作爲具有複雜搜索場景下的核心發動機

ES高可用且高擴展。一方面同升級硬件完成系統擴展,稱爲垂直或向上擴展,另一方面,則增加更過的服務器來完成系統擴展,稱爲水平擴展或橫向擴展。

ES架構組成:

Gateway,代表ES索引的持久化存儲方式。ES默認將數據存入內存,當內存滿後在持久化到Gateway中。當ES集羣關閉或重啓後,從Geteway裏讀取索引數據。

Distributed Lucene Directory,Lucene裏的索引文件組成的目錄,負責管理索引文件,包括數據的讀入、寫入以及索引的添加合併等。

River,代表數據源,以插件形式存在於ES。

Mapping,映射。

Search Module,搜索模塊、支持搜索常用操作。

Index Module,索引模塊、支持索引常用操作。

Discovery,負責集羣的master節點發現。其發現機制:默認實現方式是單播和多播的形式,同時支持點對點的實現。

Scripting,腳本語言。

Transport,代表ES內部節點,跟集羣的客戶端交互。

RESTful Style API,通過RESTful方式實現的API。

3rd plugins,第三方插件。

Java(Netty),開發框架。

JMX,監控。

二、ES的搭建

搜索引擎,作用:更快的找到我們所要的,方式:生成索引,步驟:(1)把資料編號(2)把每篇資料的內容切詞(3)處理成“詞--》資料”的關係

Lucene:搜索引擎的類庫,由Java開發

solr:開源項目,底層基於Lucene實現的搜索引擎產品

ElasticSearch:開源項目,提供了RESTful API(直接通過HTTP協議收發請求和響應,接口清晰簡單)的服務

1. Linux單節點配置ES(安裝ES版本6.4.1)

(1)添加用戶

groupadd es

useradd es -g es -p password(指定密碼)

chown -R es:es elasticsearch-6.4.1(賦予該目錄下所有文件可操作權限)

(2)切換用戶,並修改配置問健

su es

vi elasticsearch.yml 修改配置文件參數值 network.host:Linux的ip

(3)啓動ES

前端啓動:cd elasticsearch-6.4.1

./bin/elasticsearch

後端啓動:cd elasticsearch-6.4.1

./bin/elasticsearch -d

本地測試:curl -X 127.0.0.1:9200

 

注意:啓動過程中可能會顯示報錯

解決辦法:

ERROR: [3] bootstrap checks failed

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解決辦法:

編輯 /etc/security/limits.conf,追加以下內容;

* soft nofile 65536

* hard nofile 65536

此文件修改後需要重新登錄用戶,纔會生效

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決辦法:

編輯 /etc/sysctl.conf,追加以下內容:

vm.max_map_count=655360

保存後,執行:

 

sysctl -p

 

[3]: max number of threads [2048] for user [tongtech] is too low, increase to at least [4096]

錯誤原因:啓動檢查未通過

    elasticsearch用戶的最大線程數太低

解決辦法:

vim /etc/security/limits.conf

* soft nproc 4096

* hard nproc 4096

2. ES的集羣部署

1)時鐘同步

# 設置本地時間

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 集羣時間日期同步NTP

yum install ntp

ntpdate pool.ntp.org

2)修改hosts文件

vim /etc/hosts

192.168.10.129 ES_01
192.168.10.130 ES_02
192.168.10.131 ES_03

3)關閉防火牆

4)修改elasticsearch.yml配置文件,如下:

cluster.name: es-group #集羣名稱,可以自行修改
node.name: node-1 #節點名稱,自行修改
network.host: 172.27.1.1 #主機地址,這裏寫本機IP  
# 是否參與master選舉和是否存儲數據;這裏根據你們具體部署的機子自行調整,下面默認爲master節點
node.master: true # 節點類型,若三臺一般部署爲 master[true] client[true] data[false]
node.data: true # 節點類型,若三臺一般部署爲 master[true] client[false] data[true]
# master選舉最少的節點數,這個一定要設置爲N/2+1,其中N是:具有master資格的節點的數量,而不是整個集羣節點個數
discovery.zen.minimum_master_nodes: 2
# discovery ping的超時時間,擁塞網絡,網絡狀態不佳的情況下設置高一點
# discovery.zen.ping.timeout: 3s

# [單播] 注意,分佈式系統整個集羣節點個數N要爲奇數個!!
discovery.zen.ping.unicast.hosts: ["172.27.1.1:9300", "172.27.1.2:9300", "172.27.1.3:9300"]

5)啓動ES集羣

3. 安裝Kibana插件

1)修改kibana.yml配置文件,如下:

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.10.129:9200"

2)啓動Kibana

bin/kibana,瀏覽器訪問http://IP:5601

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章