elasticsearch7.0安裝及配置優化


簡單講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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM