簡單講ES開箱即用,不用任何配置也能玩轉搜索引擎;以下內容是根據易企秀線上實際使用場景進行的安裝和配置,支持冷熱數據分離
1、安裝
- Linux 環境下載安裝包
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
- 解壓
tar -xvf elasticsearch-7.0.0-linux-x86_64.tar.gz
- 因es7.0自帶了java環境 ,所以不需要再單獨下載JDK,進入bin目錄直接啟動即可
./elasticsearch -d # -d 意思是后台運行,需要注意的是es要求非Root用戶啟動
2、安裝IK
- 下載
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip
- 在plugins目錄下創建ik目錄,並將elasticsearch-analysis-ik-7.0.0.zip解壓到該目錄
mkdir plugins/ik
unzip elasticsearch-analysis-ik-7.0.0.zip ik
- 重啟es集群
3、優化
es的安裝和配置是非常輕量級的,為滿足多種不同的應用場景,底層提供多種數據結構支持,並做了大量的默認配置優化,部分配置針對具體的用戶使用場景可能是冗余的,甚至可能造成性能的下降,需要根據實際業務場景做適當取舍,我們結合自身使用場景做了如下優化(文章中有疏漏或不正確的地方也歡迎點評指正)。
- 環境配置
sudo swapoff -a
# 禁用swapping,開啟服務器虛擬內存交換功能會對es產生致命的打擊 vm.max_map_count # 在/etc/sysctl.conf文件中找到該參數,修改 655300 為 262144后 執行sysctl -p,不然啟動時會報值太小
常用的配置在兩個文件里,分別是 elasticsearch.yml 和 jvm.options(配置內存)
- jvm.options
jvm.options主要是進行內存相關配置,官方建議分配給es的內存不要超出系統內存的50%,預留一半給Lucene,因為Lucene會緩存segment數據提升檢索性能;內存配置不要超過32g,如果你的服務器內存沒有遠遠超過64g,那么不建議將es的jvm內存設置為32g,因為超過32g后每個jvm對象指針的長度會翻倍,導致內存與cpu的開銷增大。
-Xms10g
-Xmx10g
- elasticsearch.yml
基礎配置:
cluster.name # 配置es集群名稱,相同名稱的集群會自動識別 node.name # es7.0集群節點名稱會自動獲取本機hostname,如果不是多實例部署,可不配置該項 path.data # 指定數據存放目錄,多目錄逗號分隔 path.logs # 指定日志存放目錄 network.host # 指定本機ip地址 http.port # 指定http協議端口 ,多實例部署時需要修改 transport.tcp.port # 指定tcp協議端口,多實例部署時需要修改 cluster.initial_master_nodes: [" "] # 指定主節點列表,需要在每個節點上配置該參數 discovery.zen.ping.unicast.hosts: [] # 廣播節點
優化配置:
bootstrap.memory_lock: true #設置為true鎖住內存,當服務混合部署了多個組件及服務時,應開啟此操作,允許es占用足夠多的內存。 indices.breaker.request.limit: 10% #設置單個request請求的內存熔斷限制,默認是jvm堆的60%(es7.0引入了新的內存熔斷機制,會智能判斷,規避OOM)。 index.merge.scheduler.max_thread_count: 1 #設置segment合並時占用的線程數,配置線程數越多對磁盤io消耗就越大(SSD忽略)。 indices.queries.cache.size:20% #query請求可使用的jvm內存限制,默認是10%。 indices.requests.cache.size:2% #查詢request請求的DSL語句緩存,被緩存的DSL語句下次請求時不會被二次解析,可提升檢索性能,默認值是1%。 indices.fielddata.cache.size:30% #設置字段緩存的最大值,默認無限制。 node.attr.box_type: hot #用來對索引數據進行冷熱分離,需要注意的是 setting 中也要進行相關配置 "index.routing.allocation.require.box_type": "hot"
作者:_江邊城外_
鏈接:https://www.jianshu.com/p/119c2d0574d9
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。
