表明document的惟一標識,與index和type一塊兒,能夠惟一標識和定位一個document數據庫
咱們能夠手動指定document的id(put /index/type/id),也能夠不指定,由es自動爲咱們建立一個idjson
手動指定document id安全
通常來講,是從某些其餘的系統中,導入一些數據到es時,會採起這種方式,就是使用系統中已有數據的惟一標識,做爲es中document的id。舉個例子,好比說,咱們如今在開發一個電商網站,作搜索功能,或者是OA系統,作員工檢索功能。這個時候,數據首先會在網站系統或者IT系統內部的數據庫中,會先有一份,此時就確定會有一個數據庫的primary key(自增加,UUID,或者是業務編號)。若是將數據導入到es中,此時就比較適合採用數據在數據庫中已有的primary key。分佈式
自動生成id網站
數據產生出來之後,可能就沒有id,直接就放es一個存儲,那麼這個時候,可能就不太適合說手動指定document id的形式了編碼
自動生成的id,長度爲20個字符,URL安全,base64編碼,GUID,分佈式系統並行生成時不可能會發生衝突spa
代碼示例code
手動指定惟一標識cdn
PUT /test_index/test_type/1
{
"test_field": "create id by myself"
}
複製代碼
自動生成idblog
POST /test_index/test_type
{
"test_field": "create id by es"
}
複製代碼
_source元數據:就是說,咱們在建立一個document的時候,使用的那個放在request body中的json串,默認狀況下,在get的時候,會原封不動的給咱們返回回來。
PUT /test_index/test_type/2
{
"name": "Tom",
"age": 12,
"gender": "M"
}
複製代碼
執行GET請求,返回數據:
GET test_index/test_type/2
{
"_index": "test_index",
"_type": "test_type",
"_id": "2",
"_version": 1,
"found": true,
"_source": {
"name": "Tom",
"age": 12,
"gender": "M"
}
}
複製代碼
定製返回結果
定製返回的結果,指定_source中,返回哪些field
GET /test_index/test_type/2?_source=name,age
{
"_index": "test_index",
"_type": "test_type",
"_id": "2",
"_version": 1,
"found": true,
"_source": {
"name": "Tom",
"age": 12
}
}
複製代碼
若是須要新建文檔,不想替換文檔,就須要強制進行建立文檔。
語法:
PUT /index/type/id?op_type=create
PUT /index/type/id/_create
複製代碼
兩種均可以,可是若是 document id 已經存在,則會報錯
語法
DELETE /index/type/id
複製代碼
不會當即物理刪除,只會將其標記爲deleted,當數據愈來愈多的時候,es會在適當的時機在後臺自動刪除標記爲deleted的document