---恢復內容開始---
ElasticSearch入坑指南之概述及安裝
瞭解ElasticSearch
ElasticSearch(簡稱ES)基於Lucene的分佈式全文檢索引擎。使用ES可以實現近實時的存儲、檢索及海量數據的分析。
ES可以應用於以下場景
- 日誌或交易記錄的收集,分析,趨勢挖掘等,如:ELK可視化日誌查詢解析系統..
- 站內搜索或商品數據檢索,如:github,維基百科..
- 價格報警平臺,如:商品價格低於XX時短信通知客戶..
ES核心概念
- 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相關概念與關係型數據庫的對比
|關係型數據庫|ElasticSearch|
|--------|--------|
|數據庫Database|索引Index,支持全文索引|
|表Table|類型Type|
|數據行Row|文檔Document,沒有固定文檔結構,不同文檔可以有不同字段集合|
|數據列Column|字段Field|
|模式Schema|映射Mapping|
---
安裝和配置
#下載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