教你用Elastic Search:運行第一條Hello World搜索命令
摘要:Elastic Search可實時對資料庫進行全文檢索、處理同義詞。從同樣的數據中生成分析和聚合數據。
本文分享自華為雲社區《Elastic Search入門(一): 簡介,安裝,運行第一條Hello World搜索命令》,作者:黃辣雞 。
用他來做什麼?
實時對資料庫進行全文檢索、處理同義詞。從同樣的數據中生成分析和聚合數據。
- 分散式實時文檔存儲、每個欄位可以被索引與搜索
- 分散式實時搜索引擎
- 支援上百個節點的擴展,支援PB級別的結構化非結構化數據
怎麼來用他?
Elasticsearch 會將所有的功能打包成為一個單獨的服務,這樣你可以通過程式和它提供的簡單的Restful API進行通訊。
為什麼他會被叫做彈性搜索
因為搜索結果會有一個相關性評分,並且會根據這個相關性進行排序,因此這個跟傳統資料庫的要麼匹配要麼不匹配的模式不同。
安裝(Windows)
安裝方式:參考
- 先安裝java(安裝可執行文件)“
- 再安裝curl(解壓)
- 最後安裝elasticsearch(解壓)
Hello World
進入es的bin目錄後,運行elasticsearch的bat文件。
重新打開cmd終端,運行:
curl "//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節點已經啟動,並收到了第一個響應。
直接在瀏覽器中輸入//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 '//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 "//localhost:9200/_count?pretty" -d {\"query\":{\"match_all\":{}}} 得到響應: { "count" : 35, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 } }