<p>---恢復內容開始---</p># ElasticSearch入坑指南之概述及安裝html
瞭解ElasticSearch
ElasticSearch(簡稱ES)基於Lucene的分佈式全文檢索引擎。使用ES能夠實現近實時的存儲、檢索及海量數據的分析。node
ES能夠應用於如下場景git
- 日誌或交易記錄的收集,分析,趨勢挖掘等,如:ELK可視化日誌查詢解析系統..
- 站內搜索或商品數據檢索,如:github,維基百科..
- 價格報警平臺,如:商品價格低於XX時短信通知客戶..
ES核心概念github
- Near Realtime (NRT近實時) 從索引一個文檔開始至該文檔被檢索到有必定時間的延遲(默認爲1s)
- Cluster(集羣) 一個或多個節點的集合,他們一塊兒存儲數據而且提供全部節點聯合索引及檢索功能
- Node(節點) 節點是一個單獨的服務器,是集羣的一部分,存儲數據並參與集羣中的索引及檢索功能
- Shards(分片) ES能夠存儲大量數據,可是當數據量特別大時,單個節點的服務請求會變的很慢,爲解決此問題ES提供了將Index拆分到多個Shared的能力,每一個分片都是獨立的全功能的索引,能夠存儲在集羣中任意的節點上。 每一個 Elasticsearch 分片是一個 Lucene 索引。在單個 Lucene 索引中有一個最大的文檔數量限制。從 LUCENE-5843 的時候開始,該限制爲 2,147,483,519(=Interger.MAX_VALUE - 128)個文檔。您可使用 _cat/shards api 來監控分片大小。 分片兩個重要的理由:
- 水平拆分/拓展
- 經過分佈式和跨Shared操做提高性能及吞吐
- Replicas(副本) 爲實現單Node/Shared故障遷移功能,ES能夠設置一個或多個Index的數據到副本Node/Shared中。副本是一個分片的精確複製,每一個分片能夠有零個或多個副本。ES中能夠有許多相同的分片,其中之一被選擇更改索引操做,這種特殊的分片稱爲主分片。 當主分片丟失時,集羣將副本提高爲新的主分片。 副本很是重要的兩個理由是 :
- 在 shard/node 故障的狀況下提供了高可用性。爲了達到這個目的,須要注意的是在原始的/主 Shard 被複制時副本的 Shard 不會被分配到相同的節點上。
- 它可讓你水平擴展搜索量/吞吐量,由於搜索能夠在全部的副本上並行執行。
- Index(索引) 具備類似特徵的文檔的集合,能夠理解爲關係型數據庫中的Database(數據庫),一般以小寫命名
- Type(類型) 一個類型是一個索引中的邏輯分區,能夠理解爲關係型數據庫中的Table(表),一個索引能夠包含多個類型,6.X版本以後一個索引只能包含一個類型, 同一索引中的不一樣Type類型的相同名稱的屬性不能有不一樣類型,如:Index1中的Type1和Type2都有title字段,title字段不能在Type1中爲int類型,在Type2中爲string類型
- Document(文檔) 索引信息的基本單位,以Json格式表示,能夠理解爲關係型數據庫的Row(行),
- Mapping(映射) Mapping用於定義文檔之間的關係(如:paren-child,join等),聲明文檔Field的類型,analyzer分詞規則等,能夠理解爲關係型數據庫中的表的定義或靜態語言中的數據類型聲明
ES相關概念與關係型數據庫的對比數據庫
<font> |關係型數據庫|ElasticSearch| |--------|--------| |數據庫Database|索引Index,支持全文索引| |表Table|類型Type| |數據行Row|文檔Document,沒有固定文檔結構,不一樣文檔能夠有不一樣字段集合| |數據列Column|字段Field| |模式Schema|映射Mapping| </font> ---json
安裝和配置vim
官方下載地址api
#下載ES文件至指定目錄 wget -P Downloads https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz #解壓ES安裝包至指定目錄 tar -zxvf Downloads/elasticsearch-6.2.3.tar.gz -C /usr/local/app #打開ES安裝目錄 cd /usr/local/app/elasticsearch-6.2.3 #啓動ES bin/elasticsearch #後臺啓動ES bin/elasticsearch -d
- 安裝踩坑指南 can not run elasticsearch as root elasticsearch能夠執行腳本文件,爲了安全性,默認不容許使用root用戶啓動服務,須要新建立用戶名和用戶組啓動服務。
#建立es用戶組 groupadd esgroup #增長es用戶並附加到es組 useradd esuser -g esgroup -p espassword #給予目錄權限 chown -R esuser:esgroup /usr/local/app/elasticsearch-6.2.3 #切換爲esuser用戶 su esuser
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]安全
#切換爲root用戶 su root #修改配置文件 vi /etc/security/limits.d/90-nproc.conf #空白處添加如下內容 * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]服務器
#切換爲root用戶 su root #修改配置文件 vi /etc/sysctl.conf #空白處添加如下內容 vm.max_map_count=262144 #執行命令 sysctl -p
- ES重要配置修改 參考地址
編輯ES配置文件
#編輯ES配置文件 vim config/elasticsearch.yml #修改network.host: 0.0.0.0(默認ES只能本機訪問,單機測試使用不涉及集羣相關配置)
#安裝中文分詞 bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.3/elasticsearch-analysis-ik-6.2.3.zip #測試是否安裝成功 curl -XGET -H 'Content-Type: application/json' 'http://localhost:9200/_analyze?pretty' -d '{ "analyzer" : "ik_max_word", "text": "中華人民共和國國歌" }' #安裝拼音分詞 bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.2.3/elasticsearch-analysis-pinyin-6.2.3.zip
安裝Kibana kibana是一個與elasticsearch一塊兒工做的開源的分析和可視化的平臺。使用kibana能夠查詢、查看並與存儲在elasticsearch索引的數據進行交互操做。使用kibana能執行高級的數據分析,並能以圖表、表格和地圖的形式查看數據。
#下載Kibana wget -P Downloads https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-x86_64.rpm #安裝Kibana sudo rpm --install kibana-6.2.3-x86_64.rpm #查找Kibana配置文件路徑 find / -name kibana.yml #修改Kibana配置 vim /etc/kibana/kibana.yml #啓動Kinaba cd /usr/share/kibana bin/kibana
- 開機啓動方式
#改用戶及用戶組 vim /etc/systemd/system/kibana.service #修改成 User=esuser Group=esgroup #開機啓動Kinaba systemctl daemon-reload systemctl start kibana
- 啓動Kinaba報錯處理
permission denied, open '/usr/share/kibana/optimize/.babelcache.json'
#賦予用戶執行權限或切換root帳戶執行 chown -R esuser:esgroup /usr/share/kibana su root
Unable to connect to Elasticsearch at http://localhost:9200.
#修改Kibana配置 vim /etc/kibana/kibana.yml elasticsearch.url修改成ip加端口格式,檢查elasticsearch配置是否正確
其它
ps -aux | grep kibana kill -9 16452 /var/log/messages