1、_cat 查詢
GET /_cat/nodes: 查看所有節點
GET /_cat/health: 查看es 健康狀況
GET /_cat/master: 查看主節點
GET /_cat/indices:查看所有索引show databases;
2、索引一個文檔(保存)
保存一個數據,保存在哪個索引的哪個類型下,指定用哪個唯一標識
PUT customer/external/1;在customer 索引下的external 類型下保存1 號數據為
PUT customer/external/1
{
"name": "John Doe"
}
PUT 和POST 都可以,
POST 新增。如果不指定id,會自動生成id。指定id 就會修改這個數據,并新增版本號
PUT 可以新增也可以修改。PUT 必須指定id;由于PUT 需要指定id,我們一般都用來做修改
操作,不指定id 會報錯。
3、查詢文檔
GET customer/external/1
結果:
{
"_index": "customer", //在哪個索引
"_type": "external", //在哪個類型
"_id": "1", //記錄id
"_version": 2, //版本號
"_seq_no": 1, //并發控制字段,每次更新就會+1,用來做樂觀鎖
"_primary_term": 1, //同上,主分片重新分配,如重啟,就會變化
"found": true,
"_source": { //真正的內容
"name": "John Doe"
}
}
更新攜帶以下參數:
?if_seq_no=0&if_primary_term=1
4、更新文檔
POST customer/external/1/_update
{
"doc":{
"name": "John Doew"
}
}
或者
POST customer/external/1{
"name": "John Doe2"
}
或者
?
PUT customer/external/1{
"name": "John Doe"
}
- 不同:POST 操作會對比源文檔數據,如果相同不會有什么操作,文檔version 不增加
PUT 操作總會將數據重新保存并增加version 版本;
帶_update 對比元數據如果一樣就不進行任何操作。
看場景;
對于大并發更新,不帶update;
對于大并發查詢偶爾更新,帶update;對比更新,重新計算分配規則。
- ?更新同時增加屬性
POST customer/external/1/_update
{
"doc": { "name": "Jane Doe", "age": 20 }
}
PUT 和POST 不帶_update 也可以
5、刪除文檔&索引
DELETE customer/external/1
DELETE customer
6、bulk 批量API
POST customer/external/_bulk
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
語法格式:
{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n
復雜實例:
POST /_bulk
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title": "My first blog post" }
{ "index": { "_index": "website", "_type": "blog" }}
{ "title": "My second blog post" }
{ "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }
{ "doc" : {"title" : "My updated blog post"} }
bulk API 以此按順序執行所有的action(動作)。如果一個單個的動作因任何原因而失敗,
它將繼續處理它后面剩余的動作。當bulk API 返回時,它將提供每個動作的狀態(與發送
的順序相同),所以您可以檢查是否一個指定的動作是不是失敗了。