image.png
官方網址:https://www.elastic.co/cn/products/elasticsearch
Github:https://github.com/elastic/elasticsearch
總結:
1、elasticsearch是一個基於Lucene的高擴展的分布式搜索伺服器,支持開箱即用。
2、elasticsearch隱藏了Lucene的複雜性,對外提供Restful 接口來操作索引、搜索。
突出優點:
1.擴展性好,可部署上百臺伺服器集群,處理PB級數據。
2.近實時的去索引數據、搜索數據。
es和solr選擇哪個?
1.如果你公司現在用的solr可以滿足需求就不要換了。
2.如果你公司準備進行全文檢索項目的開發,建議優先考慮elasticsearch,因為像Github這樣大規模的搜索都在用它。
下圖是ElasticSearch的索引結構,下邊黑色部分是物理結構,上邊橙色部分是邏輯結構,邏輯結構也是為了更好的去描述ElasticSearch的工作原理及去使用物理結構中的索引文件
邏輯結構部分是一個倒排索引表:
1、將要搜索的文檔內容分詞,所有不重複的詞組成分詞列表。
2、將搜索的文檔最終以Document方式存儲起來。
3、每個詞和docment都有關聯。
如下:
現在,如果我們想搜索 quick brown ,我們只需要查找包含每個詞條的文檔:
兩個文檔都匹配,但是第一個文檔比第二個匹配度更高。如果我們使用僅計算匹配詞條數量的簡單 相似性算法 ,那麼,我們可以說,對於我們查詢的相關性來講,第一個文檔比第二個文檔更佳。
2 ElasticaSearch安裝2.1 安裝安裝配置:
1、新版本要求至少jdk1.8以上。
2、支持tar、zip、rpm等多種安裝方式。
在windows下開發建議使用ZIP安裝方式。
3、支持docker方式安裝
詳細參見:https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html
下載ES: Elasticsearch 6.2.1
https://www.elastic.co/downloads/past-releases
解壓 elasticsearch-6.2.1.zip
bin:腳本目錄,包括:啟動、停止等可執行腳本
config:配置文件目錄
data:索引目錄,存放索引文件的地方
logs:日誌目錄
modules:模塊目錄,包括了es的功能模塊
plugins :插件目錄,es支持插件機制
ES的配置文件的地址根據安裝形式的不同而不同:
使用zip、tar安裝,配置文件的地址在安裝目錄的config下。
使用RPM安裝,配置文件在/etc/elasticsearch下。
使用MSI安裝,配置文件的地址在安裝目錄的config下,並且會自動將config目錄地址寫入環境變量ES_PATH_CONF。
我們使用的zip包安裝,配置文件在ES安裝目錄的config下。
配置文件如下:
elasticsearch.yml :用於配置Elasticsearch運行參數 jvm.options :用於配置Elasticsearch JVM設置log4j2.properties:用於配置Elasticsearch日誌
2.2.2 elasticsearch.yml配置格式是YAML,可以採用如下兩種方式:
方式1:層次方式
path: data: /var/lib/elasticsearch logs: /var/log/elasticsearch
方式2:屬性方式
path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch
例子如下:
cluster.name: xuecheng #配置elasticsearch的集群名稱,默認是elasticsearch。建議修改成一個有意義的名稱。node.name: xc_node_1 #節點名,通常一臺物理伺服器就是一個節點,es會默認隨機指定一個名字,建議指定一個有意義的名稱,方便管理network.host: 0.0.0.0 #綁定ip地址http.port: 9200 #暴露的http埠transport.tcp.port: 9300 #內部埠node.master: true #主節點node.data: true #數據節點discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301", "0.0.0.0:9302"] #設置集群中master節點的初始列表discovery.zen.minimum_master_nodes: 1 #主結點數量的最少值 ,此值的公式為:(master_eligible_nodes / 2) + 1 ,比如:有3個符合要求的主結點,那麼這裡要設置為2。bootstrap.memory_lock: false #內存的鎖定只給es用node.max_local_storage_nodes: 1 #單機允許的最大存儲結點數,通常單機啟動一個結點建議設置為1,開發環境如果單機啟動多個節點可設置大於1path.data: D:\ElasticSearch\elasticsearch‐6.2.1\data #索引目錄path.logs: D:\ElasticSearch\elasticsearch‐6.2.1\logs #日誌http.cors.enabled: true # 跨域設置http.cors.allow‐origin: /.*/
2.2.3 jvm.options設置最小及最大的JVM堆內存大小:
2.2.4 log4j2.properties
在jvm.options中設置 -Xms和-Xmx:
1) 兩個值設置為相等
2) 將 Xmx 設置為不超過物理內存的一半日誌文件設置,ES使用log4j,注意日誌級別的配置。
2.3 啟動ES進入bin目錄,在cmd下運行:elasticsearch.bat
瀏覽器輸入:http://localhost:9200
2.4 head插件安裝
顯示結果如下(配置不同內容則不同)說明ES啟動成功:head插件是ES的一個可視化管理插件,用來監視ES的狀態,並通過head客戶端和ES服務進行交互,比如創建映射、創建索引等,head的項目地址在https://github.com/mobz/elasticsearch-head 。
從ES6.0開始,head插件支持使得node.js運行。
1、安裝node.js
2、下載head並運行
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start open
HTTP://本地主機:9100 /
3、運行
作者:striveSmile
連結:https://www.jianshu.com/p/403c9d5b1463