ElasticSearch 簡介
1. ElasticSearch 簡稱 ES
2. ElasticSearch 是基於 Lucene 的開源、分佈式、RESTful 接口全文搜索引擎
3. ElasticSearch 是一個分佈式文檔數據庫
4. ElasticSearch 支持高可用和可擴展
ElasticSearch 優點
1. 橫向可擴展性
1. 只需增長服務器,作一些配置文件修改,啓動就能夠併入集羣
2. 分片機制提供更好的分佈性
1. 同一個索引文件分紅多個分片(sharding),這點相似於 HDFS 的塊機制,分而治之的方式能夠提升處理效率
2. 注意:集羣建立後,主分片的數量是不可以改變的,索引數據的存儲依賴於主分片數量進行邏輯處理的
3. 高可用
1. 提供複製(relpica)機制,一個分片能夠設置多個複製,使得某臺服務器宕機,集羣可使用,
並把宕機數據恢復到其餘可用節點
2. 使用簡單 : 只需一條命令就能夠下載文件,而後很快就能夠搭建一個站內搜索引擎
ElasticSearch 應用場景
1. 大型日誌收集(ELK)
2. 電商商品搜索或者網盤搜索引擎
ElasticSearch 存儲結構
1. 面向文檔型數據庫,一條數據就是一個文檔,以 JSON 格式進行存儲
{
"username" : "張三",
"age" : 12,
"sex" : 0
}
2. 與關係型數據庫的對比
關係型數據庫 : 數據庫(database) ---> 表(table) ------> 行(row) -----> 列(Columns)
ElasticSearch : 索引(index) ----> 類型(type) ----> 文檔(document) ----> 字段(fields)
Linux(CentOS7) 安裝 ElasticSearch
1. 安裝 jdk 以及配置環境變量
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
2. 下載elasticsearch安裝包
官方文檔https://www.elastic.co/downloads/elasticsearch
注意:linux安裝內存建議1g內存以上
3. 上傳elasticsearch安裝包,解壓elasticsearch
1. tar -zxvf elasticsearch-6.4.3.tar.gz
4. 修改配置文件 :
1. network.host: 192.168.212.151 es所在服務id
2. http.port: 9200 es 供外部訪問IP
5. 啓動elasticsearch
1. 常見錯誤分析
can not run elasticsearch as root
解決方案:
由於安全問題elasticsearch 不讓用root用戶直接運行,因此要建立新用戶
第一步:liunx建立新用戶 adduser XXX 而後給建立的用戶加密碼 passwd XXX 輸入兩次密碼。
第二步:切換剛纔建立的用戶 su XXX 而後執行elasticsearch 會顯示Permission denied 權限不足。
第三步:給新建的XXX賦權限,chmod 777 * 這個不行,由於這個用戶自己就沒有權限,確定本身不能給本身付權限。因此要用root用戶登陸付權限。
第四步:root給XXX賦權限,chown -R XXX /你的elasticsearch安裝目錄。
而後執行成功。
建立一個分組 groupadd esmayikt
useradd esyushengjun -g esmayikt -p 123456
chown -R esyushengjun:esmayikt elasticsearch-6.4.3
su esyushengjun 切換用戶
繼續報錯
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] is
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl –p
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
重啓服務器便可
6. 訪問elasticsearch,須要關閉防火牆 systemctl stop firewalld
7. 9300與9200區別
9300端口: ES節點之間通信使用
9200端口: ES節點 和 外部 通信使用
Kibana 環境安裝
1. 下載到對應的版本進行解壓 tar -zxvf kibana-6.4.3-linux-x86_64.tar.gz
2. 修改配置文件 vim config/kibana.yml
server.port: 5601
server.host: "192.168.212.151"
elasticsearch.url: "http:// 192.168.212.151:9200"
3. 啓動 ./bin/kibana
4. 訪問查看 http://192.168.212.179:5601/app/kibana
Elasticsearch版本控制
1. 爲何要進行版本控制 : 爲了保證數據在多線程操做下的準確性
2. 悲觀鎖和樂觀鎖
1. 悲觀鎖:假設會發生併發衝突,屏蔽一切可能違反數據準確性的操做
2. 樂觀鎖:假設不會發生併發衝突,只在提交操做是檢查是否違反數據完整性
3. 內部版本控制和外部版本控制
1. 內部版本控制:_version自增加,修改數據後,_version會自動的加1
2. 爲了保持_version與外部版本控制的數值一致 使用version_type=external檢查數據當前的version值是否小於請求中的version值
PUT /test/user/1?version=2
{
"name":"zhangsan",
"sex":0,
"age":22
}