ES(elasticsearch)搜索引擎安裝和使用

ElasticSearch安裝

由於本人的操作系統是deepin的liunx系統, 所以本博主發一下Linux安裝步驟。

1.簡介

Elasticsearch簡介*

Elasticsearch是一個實時的分佈式搜索和分析引擎。它可以幫助你用前所未有的速度去處理大規模數據。

它可以用於全文搜索,結構化搜索以及分析,當然你也可以將這三者進行組合。

Elasticsearch是一個建立在全文搜索引擎 Apache Lucene™ 基礎上的搜索引擎,可以說Lucene是當今最先進,最高效的全功能開源搜索引擎框架。

但是Lucene只是一個框架,要充分利用它的功能,需要使用JAVA,並且在程序中集成Lucene。需要很多的學習瞭解,才能明白它是如何運行的,Lucene確實非常複雜。

Elasticsearch使用Lucene作爲內部引擎,但是在使用它做全文搜索時,只需要使用統一開發好的API即可,而不需要了解其背後複雜的Lucene的運行原理。

當然Elasticsearch並不僅僅是Lucene這麼簡單,它不但包括了全文搜索功能,還可以進行以下工作:

  • 分佈式實時文件存儲,並將每一個字段都編入索引,使其可以被搜索。

  • 實時分析的分佈式搜索引擎。

  • 可以擴展到上百臺服務器,處理PB級別的結構化或非結構化數據。

這麼多的功能被集成到一臺服務器上,你可以輕鬆地通過客戶端或者任何你喜歡的程序語言與ES的RESTful API進行交流。

Elasticsearch的上手是非常簡單的。它附帶了很多非常合理的默認值,這讓初學者很好地避免一上手就要面對複雜的理論,

它安裝好了就可以使用了,用很小的學習成本就可以變得很有生產力。

隨着越學越深入,還可以利用Elasticsearch更多高級的功能,整個引擎可以很靈活地進行配置。可以根據自身需求來定製屬於自己的Elasticsearch。

使用案例:

  • 維基百科使用Elasticsearch來進行全文搜做並高亮顯示關鍵詞,以及提供search-as-you-type、did-you-mean等搜索建議功能。

  • 英國衛報使用Elasticsearch來處理訪客日誌,以便能將公衆對不同文章的反應實時地反饋給各位編輯。

  • StackOverflow將全文搜索與地理位置和相關信息進行結合,以提供more-like-this相關問題的展現。

  • GitHub使用Elasticsearch來檢索超過1300億行代碼。

  • 每天,Goldman Sachs使用它來處理5TB數據的索引,還有很多投行使用它來分析股票市場的變動。

但是Elasticsearch並不只是面向大型企業的,它還幫助了很多類似DataDog以及Klout的創業公司進行了功能的擴展。

Elasticsearch的優缺點**:

優點

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

缺點

  1. 只有一名開發者(當前Elasticsearch GitHub組織已經不只如此,已經有了相當活躍的維護者)
  2. 還不夠自動(不適合當前新的Index Warmup API)

參考https://www.cnblogs.com/chowmin/articles/4629220.html

彈性堆棧的核心

Elasticsearch是一個分佈式RESTful搜索和分析引擎,能夠解決越來越多的用例。作爲Elastic Stack的核心,它集中存儲您的數據,以便您可以發現預期並發現意外情況。

您與數據的關係會發生變化。你可以負擔得起迭代並覆蓋更多的基礎。

ElasticSearch已經實現了帶有限狀態傳感器的反向索引用於全文查詢,用於存儲數字和地理數據的BKD樹以及用於分析的列存儲。

由於所有內容都已編入索引,因此在使用時永遠不會留下索引衝突。您可以以極其驚人的速度利用和訪問所有數據。

使用強大的功能擴展Elasticsearch

向羣集添加用戶名和密碼,監控Elasticsearch的執行方式,運行機器學習作業以檢測異常,以及X-Pack中功能

X-Pack可輕鬆安裝到Elasticsearch中,爲您提供安全,監控,警報,報告,圖形探索和機器學習功能的增強體驗。

Elasticsearch-head 以及 bigdesk

 

2.下載

名稱 版本 下載地址
elasticsearch 1.7.3 elasticsearch-1.7.3.tar.gz

下載後,放到你的目錄下並解壓. 因爲我們要配置包含三個節點的集羣,可以先將其重命名爲elasticsearch-node1。比如我的是 /home/hushuai/elasticsearch/elasticsearch-node1

3.修改配置文件
打開/home/hushuai/elasticsearch/config/ 目錄下的elasticsearch.yml 文件 ,修改以下屬性值並取消該行的註釋:

cluster.name: elasticsearch #這是集羣名字,起名爲 elasticsearch。es啓動後會將具有相同集羣名字的節點放到一個集羣下。

node.name: "es-node1" #節點名字

covery.zen.minimum_master_nodes: 2   
#指定集羣中的節點中有幾個有master資格的節點。對於大集羣可以寫3個以上。

discovery.zen.ping.timeout: 40s
#默認是3s,這是設置集羣中自動發現其它節點時ping連接超時時間,爲避免因爲網絡差而導致啓動報錯,我設成了40s。

discovery.zen.ping.multicast.enabled: false
#設置是否打開多播發現節點。

network.bind_host: 127.0.0.1
#設置綁定的ip地址,這是我的master的IP。

network.publish_host: 127.0.0.1
#設置其他節點和該節點交互的IP地址

network.host: 127.0.0.1
#同時設置bind_host和publish_host上面兩個參數

discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301","127.0.0.1:9302"]
#discovery.zen.ping.unicast.hosts:["節點1的 ip","節點2 的ip","節點3的ip"]

#指明集羣中其他可能爲master的節點ip,以防es啓動後發現不了集羣中的其他節點。第一對引號裏是node1,默認端口是9300.第二個是node2,端口號是9301。第三個引號裏是node3,端口號爲9302​​​​​

進一步修改 
拷貝 elasticsearch-node1 整個文件夾,兩份,一份elasticsearch-node2,一份elasticsearch-node3. 

 

/home/hushuai/elasticsearch/config/elasticsearch.yml 文件修改如下:

node.name: "es-node2"

transport.tcp.port: 9301

http.port: 9201

 

node.name: "es-node3"

transport.tcp.port: 9302

http.port: 9202

因爲是在一臺機器在實現的集羣,只要端口不被佔用就可以。

如果想真的放的多臺機器上,只需要根據我的配置修改端口即可。

 

運行 & 關閉 elasticsearch

1.運行elasticsearch :

編輯 /home/hushuai/elasticsearch/bin/elasticsearch.in.sh, 設置 ES_MIN_MEM和ES_MAX_MEM,確保二者數值一致。

若想讓es後臺運行,則

./elasticsearch -Xms512m -Xmx512m

2.關閉elasticsearch:

來關閉整個集羣,通過:

curl -X POST http://主機IP:9200/_cluster/nodes/節點標識符(如es-node1)/_shutdown

 

安裝相關組件:

BigDesk Plugin : 彈性搜索集羣的實時圖表和統計數據。http://bigdesk.org/
Elasticsearch Head Plugin: elasticsearch-head是一個用於瀏覽和與彈性搜索集羣交互的Web前端。

http://mobz.github.io/elasticsearch-head/

 

1.安裝head插件

進入到節點elasticsearch-node1/bin路徑,並安裝插件。

./plugin -install mobz/elasticsearch-head

2. 安裝bigdesk

./plugin -install lukas-vlcek/bigdesk

打開head瀏覽,瀏覽器輸入http://127.0.0.1:9200/_plugin/head/

特別注意:粗框的是主分片,細框的是備份分片。

接下里,我們需要根據官方的https://www.oschina.net/translate/elasticsearch-getting-started?cmp來插入數據

curl -XPUT 'http://127.0.0.1:9200/dept/employee/1' -d '{ "empname": "emp1"}'  

curl -XPUT 'http://127.0.0.1:9200/dept/employee/2' -d '{ "empname": "emp2"}'  

curl -XPUT 'http://127.0.0.1:9200/dept/employee/3' -d '{ "empname": "emp3"}'  

...

搜索 XXX 的文檔, 查詢條件 #是區分保存數據最開始分類。

在查看以上的搜索的文檔裏的內容,以dept爲例子。

可直接在ES對應的IP:port後加文檔的名字獲取所有結果,例如   http://127.0.0.1:9200/dept

本人Java出身,而ES是由Java編寫,並且在數據量越來越大時,幾乎對性能沒有影響,所以相比於solr,對ES更情有獨鍾。

 

相關鏈接:

https://www.elastic.co/products/elasticsearch

https://www.oschina.net/translate/elasticsearch-getting-started?cmp

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章