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的優缺點**:
優點
- Elasticsearch是分佈式的。不需要其他組件,分發是實時的,被叫做”Push replication”。
- Elasticsearch 完全支持 Apache Lucene 的接近實時的搜索。
- 處理多租戶(multitenancy)不需要特殊配置,而Solr則需要更多的高級設置。
- Elasticsearch 採用 Gateway 的概念,使得完備份更加簡單。
- 各節點組成對等的網絡結構,某些節點出現故障時會自動分配其他節點代替其進行工作。
缺點
- 只有一名開發者(當前Elasticsearch GitHub組織已經不只如此,已經有了相當活躍的維護者)
- 還不夠自動(不適合當前新的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/
進入到節點elasticsearch-node1/bin路徑,並安裝插件。
./plugin -install mobz/elasticsearch-head
./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