天天看點

elasticSearch(一)介紹

1、 ElasticSearch介紹

1.1 介紹

elasticSearch(一)介紹

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這樣大規模的搜尋都在用它。

1.2原理與應用

1.2.1索引結構

下圖是ElasticSearch的索引結構,下邊黑色部分是實體結構,上邊橙色部分是邏輯結構,邏輯結構也是為了更好的去描述ElasticSearch的工作原理及去使用實體結構中的索引檔案

elasticSearch(一)介紹

image.png

邏輯結構部分是一個反向索引表:

1、将要搜尋的文檔内容分詞,所有不重複的詞組成分詞清單。

2、将搜尋的文檔最終以Document方式存儲起來。

3、每個詞和docment都有關聯。

如下:

elasticSearch(一)介紹

image.png

現在,如果我們想搜尋 ​

​quick brown​

​ ,我們隻需要查找包含每個詞條的文檔:

elasticSearch(一)介紹

image.png

兩個文檔都比對,但是第一個文檔比第二個比對度更高。如果我們使用僅計算比對詞條數量的簡單 相似性算法 ,那麼,我們可以說,對于我們查詢的相關性來講,第一個文檔比第二個文檔更佳。

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

elasticSearch(一)介紹

image.png

bin:腳本目錄,包括:啟動、停止等可執行腳本

config:配置檔案目錄

data:索引目錄,存放索引檔案的地方

logs:日志目錄

modules:子產品目錄,包括了es的功能子產品

plugins :插件目錄,es支援插件機制

2.2 配置檔案

2.2.1 三個配置檔案

ES的配置檔案的位址根據安裝形式的不同而不同:

使用zip、tar安裝,配置檔案的位址在安裝目錄的config下。

使用RPM安裝,配置檔案在/etc/elasticsearch下。

使用MSI安裝,配置檔案的位址在安裝目錄的config下,并且會自動将config目錄位址寫入環境變量ES_PATH_CONF。

我們使用的zip包安裝,配置檔案在ES安裝目錄的config下。

配置檔案如下:

elasticSearch(一)介紹

image.png

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,開發環境如果單機啟動多個節點可設定大于1
path.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堆記憶體大小:

在jvm.options中設定 -Xms和-Xmx:

1) 兩個值設定為相等

2) 将 ​​

​Xmx​

​ 設定為不超過實體記憶體的一半

2.2.4 log4j2.properties

日志檔案設定,ES使用log4j,注意日志級别的配置。

2.3 啟動ES

進入bin目錄,在cmd下運作:elasticsearch.bat

elasticSearch(一)介紹

image.png

浏覽器輸入:http://localhost:9200 顯示結果如下(配置不同内容則不同)說明ES啟動成功:

elasticSearch(一)介紹

image.png

2.4 head插件安裝

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、運作

elasticSearch(一)介紹

繼續閱讀