教你用Elastic Search:執行第一條Hello World搜尋命令

華為雲開發者社群發表於2022-02-16
摘要: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>'

被 < > 標記的部件:

教你用Elastic Search:執行第一條Hello World搜尋命令

例如:

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
  }
}

 

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章