摘要:Elastic Search可實時對資料庫進行全文檢索、處理同義詞。從同樣的資料中生成分析和聚合資料。
本文分享自華為雲社群《Elastic Search入門(一): 簡介,安裝,執行第一條Hello World搜尋命令》,作者:黃辣雞 。
用他來做什麼?
實時對資料庫進行全文檢索、處理同義詞。從同樣的資料中生成分析和聚合資料。
- 分散式實時文件儲存、每個欄位可以被索引與搜尋
- 分散式實時搜尋引擎
- 支援上百個節點的擴充套件,支援PB級別的結構化非結構化資料
怎麼來用他?
Elasticsearch 會將所有的功能打包成為一個單獨的服務,這樣你可以通過程式和它提供的簡單的Restful API進行通訊。
為什麼他會被叫做彈性搜尋
因為搜尋結果會有一個相關性評分,並且會根據這個相關性進行排序,因此這個跟傳統資料庫的要麼匹配要麼不匹配的模式不同。
安裝(Windows)
安裝方式:參考
- 先安裝java(安裝可執行檔案)``
- 再安裝curl(解壓)
- 最後安裝elasticsearch(解壓)
Hello World
進入es的bin目錄後,執行elasticsearch的bat檔案。
重新開啟cmd終端,執行:
curl "http://localhost:9200/?pretty"
獲得響應:
{ "name" : "HZA191152032-C", "cluster_name" : "elasticsearch", "cluster_uuid" : "ajY4l-0zTGWhcXDXcGTyMA", "version" : { "number" : "7.12.0", "build_flavor" : "default", "build_type" : "zip", "build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a", "build_date" : "2021-03-18T06:17:15.410153305Z", "build_snapshot" : false, "lucene_version" : "8.8.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
這意味著一個es節點已經啟動,並收到了第一個響應。
直接在瀏覽器中輸入http://localhost:9201 也能收到如上響應。
上面的curl命令後面的url應該用雙引號,否則會報curl: (1) Protocol "'http" not supported or disabled in libcurl錯誤。參考
叢集
叢集是一組擁有相同cluster.name的節點,支援共享資料,有可伸縮性。
可以在elasticsearch.yml配置檔案中修改cluster.name,重啟服務後生效。
使用ES
es是由java寫的工具,因此可以直接使用es內建的java客戶端呼叫,通過9300埠和es原生的協議和叢集互動。叢集中的節點通過埠9300彼此通訊。
其他語言例如js/php/python都可以通過RESTful API來呼叫ES。
呼叫命令如下:
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
被 < > 標記的部件:
例如:
curl -XGET 'http://localhost:9200/_count?pretty' -d ' { "query": { "match_all": {} } } '
如果在windows下面呼叫會出現兩個小issues,一個是像上面直接curl是會報406錯誤,因為es6之後有調整需要給curl請求加上-H;另一個是windows不支援單引號,因此全部使用
雙引號,並且json body體裡面的雙引號需要加上斜槓轉義.
參考1 參考2
windows上面呼叫:
curl -H "Content-Type: application/json" -XGET "http://localhost:9200/_count?pretty" -d {\"query\":{\"match_all\":{}}} 得到響應: { "count" : 35, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 } }