前面兩課我們了解了ES的基本概念並且學會了安裝ES,這節課我們就來講講ES基本的增刪改查;ES主要對外界提供的是REST風格的API,我們通過客戶端操作ES本質上就是API的調用。在第一課我們就講了索引、類型和文檔的含義,它們分別對應MYSQL的數據庫、表和一行數據。所以,我們在講ES的API時,大家可以按照MYSQL的SQL語句對應做理解。
ES Restful API GET、POST、PUT、DELETE、HEAD含義(這幾個是API的基本概念):
1)GET:獲取請求對象的當前狀態。
2)POST:改變對象的當前狀態。
3)PUT:創建一個對象。
4)DELETE:銷毀對象。
5)HEAD:請求獲取對象的基礎信息。
下面我們就利用Kibana的圖形化界面,來展示下ES的基本API。
1、新建一個索引(類似mysql 新建數據庫)
PUT /lib/
{
"settings":{
"index": {
"number_of_shards":3,
"number_of_replicas":1
}
}
}
或者簡單點,使用默認的分片和復制,可以直接
PUT lib2
這樣也可以生成索引
執行成功后,會顯示如下:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "lib"
}
其中,lib表示索引名稱,PUT 參數里的number_of_shards表示分片數量,number_of_replicas表示復制備份數量。
2、查詢索引
GET /lib/_settings #查詢索引lib的設置,
GET _all/_settings #查詢所有的索引設置
3、添加文檔(類似MYSQL添加一條數據)
PUT /lib/user/1
{
"name" : "kakatadage",
"age" : 33,
"about": "I like football!",
"interests" : ["girls","football"]
}
使用PUT添加,其中user表示類型(type),1代表這條數據的主鍵;如果id不填也可以,ES會自動生成一條主鍵,不過這時就不能用PUT了,需要使用POST添加
執行成功,結果如下:
{
"_index": "lib",
"_type": "user",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
4、查詢文檔
GET /lib/user/1 //查詢ID為1的數據
5、修改文檔
PUT /lib/user/1 //PUT方式進行修改,這種是把原來對應文檔覆蓋掉
{
"name" : "kakatadage",
"age" : 30,
"about": "I like money!",
"interests" : ["music","money"]
}
POST /lib/user/1/_update //POST方式修改的話,可以針對對應field來修改,比PUT要輕量
{
"doc": {
"age" :32
}
}
6、刪除文檔或索引
DELETE lib/user/1 //刪除一個文檔
DELETE lib2 //刪除索引
好了,基本的增刪改查我們講完了,是不是和SQL很類似,很簡單?不過理解簡單,實際使用還是要有大量的操作實踐才行,而且實際生產環境中,都是各種復雜查詢,后面我們會專門用幾節課來講。
