1. 程式人生 > >Elasticsearch簡介和安裝對比

Elasticsearch簡介和安裝對比

特殊 字段 tree apache 查看 端口 blog work 分布式搜索

各位小夥伴,又到了本期分享大數據技術的時間,本次給大夥帶來的是Elasticsearch這個技術,閑話不多聊,我們開始進入正題。

一、什麽是elasticsearch

Elasticsearch是一個基於Lucene的實時的分布式搜索和分析 引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠, 快速,安裝使用方便。基於RESTful接口。

二、Elasticsearch與solr對比

2.1.熱度


技術分享圖片

從上圖可以看出,在elasticserach出現後,它的搜索指數急劇上升,不久就超過了solr

2.2.性能對比

大型互聯網公司,實際生產環境測試,將搜索引擎從Solr轉到Elasticsearch以後的平均查詢速度有了50倍的提升。
技術分享圖片

2.3.優勢

a)Elasticsearch是分布式的。不需要其他組件,分發是實時的,被叫做”Push replication”。
b)Elasticsearch 完全支持 Apache Lucene 的接近實時的搜索。
處理多租戶(multitenancy)不需要特殊配置,而Solr則需要更多的高級設置。
c)Elasticsearch 采用 Gateway 的概念,使得備份更加簡單。
各節點組成對等的網絡結構,某些節點出現故障時會自動分配其他節點代替其進行工作。

三、Lucene與ES關系?


1)Lucene只是一個庫。想要使用它,你必須使用Java來作為開發語言並將其直接集成到你的應用中,更糟糕的是,Lucene非常復雜,你需要深入了解檢索的相關知識來理解它是如何工作的。

2)Elasticsearch也使用Java開發並使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的復雜性,從而讓全文搜索變得簡單。

四、Elasticsearch與關系型數據庫對比

ElasticSearch與關系型數據庫的相似:

技術分享圖片
1.一個ES集群可以包含多個索引(數據庫),每個索引又包含了很多類型(表),類型中包含了很多文檔(行),每個文檔又包含了很多字段(列)。
2.傳統數據庫為特定列增加一個索引,例如B-Tree索引來加速檢索。Elasticsearch和Lucene使用一種叫做倒排索引(inverted index)的數據結構來達到相同目的。
3.倒排索引源於實際應用中需要根據屬性的值來查找記錄。這種索引表中的每一項都包括一個屬性值和具有該屬性值的各記錄的地址。由於不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而稱為倒排索引(inverted index)。

五、Elasticsearch部署與啟動

註:java版本要求:最低1.7 ?

5.1.下載

地址:https://www.elastic.co/downloads/
這裏選擇elasticsearch-2.4.5.tar.gz

5.2.安裝

Es是一個分布式的搜索技術,故安裝時既可以是單機版也可以是集群,這裏介紹的是分布式安裝。
首先選擇三臺虛擬機,且這三臺虛擬機都已經安裝好jdk7,它們的IP分別為:192.168.78.204,192.168.78.205,172.168.78.206。

5.2.1 上傳並解壓

命令: tar -zxvf elasticsearch-2.4.5.tar.gz

5.2.2 配置

修改es_home/config/elasticsearch.yml (註意配置要頂格寫,冒號後面要加一個空格,最好用vim編輯器修改,容易發現錯誤)

技術分享圖片
以上為一臺虛擬機的配置,另外兩臺也要配置,需要修改的是node.name和network.host,其他地方不需要修改.

5.2.3 啟動

elasticsearch啟動的時候,不能以root用戶啟動,否則會報錯。我們可以創建一個es用戶,來專門管理elasticsearch.
創建用戶:useradd es
修改密碼:passwd es
然後將elasticsearch的整個目錄所有者和所屬組都修改成es用戶。命令:chown -R es:es elasticsearch-2.4.5

技術分享圖片

修改權限後,切換成es用戶,然後分別啟動三臺虛擬機上的elasticsearch.
命令:es_home/bin/elasticsearch
後臺運行命令:es_home/bin/elasticsearch -d
我這裏直接啟動,如下圖:

技術分享圖片
當日誌出現圖中的2步驟時,說明這臺虛擬機上的ES進程啟動成功,但是這時該節點還沒組建集群,只有出現了3步驟,cluster.service日誌出來時,才說明集群組建成功。

訪問任意一臺虛擬機的9200端口,查看單機情況。如圖:

技術分享圖片
訪問任意一臺虛擬機的ip:9200/_cluster/health?pretty 地址,查看集群的狀態

技術分享圖片

Elasticsearch提供了rest接口,故可以用curl命令,發送http請求來對索引庫進行操作。創建一個叫myindex的索引庫
命令:curl -XPUT 192.168.78.204:9200/myindex?pretty

技術分享圖片

如上圖,返回true說明創建索引庫成功。

好了,本次的對elasticsearch的介紹就到這裏了
^_^,感興趣的童學可以繼續關註上海尚學堂大數據技術文章。也可以加維信 java8733獲取資料。

Elasticsearch簡介和安裝對比