文檔的CRUD
- index 和 create 操作用put(但是如果沒有指定id必須用post,指定了id的可以用post,也可以用put)
- update和創(chuàng)建索引用post
- 獲取用get
- 刪除用delete
index
PUT index/type/id
{"user":"mike","comment":"You know ,for search"}
Create
#使用_create
PUT index/_create/id
{"user":"mike","comment":"You know ,for search"}
#不指定id,自動生成
POST index/type
{"user":"mike","comment":"You know ,for search"}
Read
GET index/type/id
Update
POST index/_update/id
{
"doc":{"user":"mikes","comment":"You know ,for search"}
}
Delete
DELETE index/type/id
index 和create、update的區(qū)別
index的功能是索引一個文檔,他既有新增一個文檔的功能,又有更新一個文檔的功能,但是本質上他的創(chuàng)建和更新功能和create和update操作又有些區(qū)別。
index和create:1、如果文檔不存在,就索引新的文檔。(這里和創(chuàng)建的是一樣的)2、如果文檔存在,index操作會刪除現(xiàn)有文檔,新的文檔被索引,version+1(這里類似實現(xiàn)了更新的功能)。create操作會失敗。
index和update:index操作會刪除現(xiàn)有文檔,新的文檔被索引,version+1。update不會刪除原來的文檔,而是實現(xiàn)真正的數(shù)據更新。
BULK
支持在異常api調用中,對不同的索引進行操作(index、create、update、delete)
單個失敗不會影響其他操作
返回結果包括了每一條操作執(zhí)行結果
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test2", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
如果是index、update、create操作,包含兩行,第一行是位置信息,第二行是字段信息
如果是delete,只有一行位置信息
mget
GET /_mget
{
"docs" : [
{
"_index" : "test",
"_id" : "1",
"_source" : false
},
{
"_index" : "test",
"_id" : "2",
"_source" : ["field3", "field4"]
},
{
"_index" : "test",
"_id" : "3",
"_source" : {
"include": ["user"],
"exclude": ["user.location"]
}
}
]
}
msearch
相當于將多個查詢請求,放在一個請求中,返回結果包含每一個親求的結果,不會將其聚合
POST kibana_sample_data_ecommerce/_msearch
{}
{"query" : {"match_all" : {}},"size":1}
{"index" : "kibana_sample_data_flights"}
{"query" : {"match_all" : {}},"size":2}
形式是一行header,一行body
注意http的content-type是"application/x-ndjson",但實際上好像也有人用"application/json"
參考:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html