ElasticSearch 簡單實用

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
    }
相關文章
相關標籤/搜索