1. 程式人生 > >史上最簡單的Elasticsearch教程-第三章:以JSON為資料互動格式的RESTful API

史上最簡單的Elasticsearch教程-第三章:以JSON為資料互動格式的RESTful API

基於Http協議,以JSON為資料互動格式的Restful風格API

(提前宣告:文章由作者:張耀烽/CSDN主頁:https://blog.csdn.net/youbitch1/

結合自己生產中的使用經驗整理,最終形成簡單易懂的文章,寫作不易,轉載請註明)

(整個教程的ES版本以及Kibana版本都是基於5.6.8)

(文章參考:Elasticsearch權威指南(書籍),Elasticsearch官方文件JavaApi5.6.8,實際專案中的應用場景)

(幫到到您請點點關注,文章持續更新中!)

 

  1. 如何傳送restful請求?:如下是一條請求的示例

    1. curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

      1. curl -X:不是必要的,可以忽略

      2. VERB:HTTP的方法;GET POST PUT DELETE HEAD

      3. PROTOCOL: http或者https的協議(如果你的環境是HTTPS時需要攜帶,HTTP時無需關注)

      4. HOST: Elasticsearch叢集中的任何一個節點的主機名,如果是在本地的節點,那麼就叫 localhost

      5. PORT: Elasticsearch HTTP服務所在的埠,預設為9200

      6. PATH: API路徑(PATH包含多個元件,稍後會寫出來)

      7. QUERY_STRING: 一些可選的查詢請求引數,比如?pretty 引數將使請求返回更加美觀 易讀的JSON資料

      8. BODY: 一個JSON格式的請求主體(不是必須的,類似於請求的引數)

  2. OK,上面這就是一條標準的restful請求,下面我直接舉個栗子吧,看的更直觀一些,一下就懂了

    1. 啟動ES和Kibana

    2. 進入Kibana的Dev Tools頁面

//比如我這裡一下計算叢集中的文件數量

curl -XGET 'http://localhost:9200/_count?pretty'-d' 

{ "query": 

    { 

        "match_all": {} 

    } 

}

// {}這個部分的東西都是Body,說白了就是你要請求的引數,我這裡選擇的match_all所有

//其他的一一對應,就看的更直白了

 

  1. 當執行完之後, Elasticsearch返回一個類似 200 OK 的HTTP狀態碼和JSON格式的響應主體(除了HEAD請求)

  2. 上面的請求會得到如下的JSON格式的響應主體:

{

  "count": 46302,

  "_shards": {

    "total": 236,

    "successful": 236,

    "skipped": 0,

    "failed": 0

  }

}

 

  1. 但是各位發現沒有,這樣寫也太麻煩了吧,本來Kibana就直接連線了我們的ES,那麼我們的IP和埠都是Kibana已知的

  2. 所以<PROTOCOL>://<HOST>:<PORT>這個部分的東西可以完全省略掉

  3. 簡寫後如下圖所示:

 

#下一章我會寫一個增刪改查的案例帶大家熟悉ES原生的SQL語句(你可以這麼理解,其實準確的說是基於HTTP的restful請求)