document的核心元數據有三個:_index、_type、_id數據庫
初始化數據:json
PUT test_index/test_type/1 { "test_content":"test test" }
{ "_index": "test_index", "_type": "test_type", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "created": true }
查詢數據:安全
GET test_index/test_type/1
{ "_index": "test_index", "_type": "test_type", "_id": "1", "_version": 1, "found": true, "_source": { "test_content": "test test" } }
根據應用狀況來講,是否知足手動指定document id的前提:分佈式
通常來講,是從某些其餘的系統中,導入一些數據到es時,會採起這種方式,就是使用系統中已有數據的惟一標識,做爲es中document的id。舉個例子,好比說,咱們如今在開發一個電商網站,作搜索功能,或者是OA系統,作員工檢索功能。這個時候,數據首先會在網站系統或者IT系統內部的數據庫中,會先有一份,此時就確定會有一個數據庫的primary key(自增加,UUID,或者是業務編號)。若是將數據導入到es中,此時就比較適合採用數據在數據庫中已有的primary key。ide
若是說,咱們是在作一個系統,這個系統主要的數據存儲就是es一種,也就是說,數據產生出來之後,可能就沒有id,直接就放es一個存儲,那麼這個時候,可能就不太適合說手動指定document id的形式了,由於你也不知道id應該是什麼,此時能夠採起下面要講解的讓es自動生成id的方式。post
語法:網站
put /index/type/id
{
「json」
}
示例:編碼
PUT /test_index/test_type/2 { "test_content": "my test" }
語法:spa
post /index/type { "json" }
示例:3d
POST /test_index/test_type { "test_content": "my test" }
{ "_index": "test_index", "_type": "test_type", "_id": "AWypxxLYFCl_S-ox4wvd", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "created": true }
自動生成的id,長度爲20個字符,URL安全、base64編碼、GUID、分佈式系統並行生成時不可能發生衝突。
初始化數據:
put /test_index/test_type/1 { "test_field1": "test field1", "test_field2": "test field2" }
查看數據:
GET /test_index/test_type/1
{ "_index": "test_index", "_type": "test_type", "_id": "1", "_version": 2, "found": true, "_source": { "test_field1": "test field1", "test_field2": "test field2" } }
_source元數據,就是說,咱們在建立一個document的時候,使用的那個放在request body中的json串,默認狀況下,在get的時候會原封不動的給咱們返回。
定製返回的結果,指定_source中,返回哪些field
GET /test_index/test_type/1?_source=test_field1,test_field2
{ "_index": "test_index", "_type": "test_type", "_id": "1", "_version": 2, "found": true, "_source": { "test_field1": "test field1", "test_field2": "test field2" } }
數據準備:
PUT test_index/test_type/4 { "test_field":"test test" }
建立文檔與全量替換的語法是同樣的,有時咱們只是想新建文檔,不想替換文檔,若是強制進行建立呢?
語法:
PUT /index/type/id?op_type=create
或者
PUT /index/type/id/_create
語法:
DELETE /index/type/id
不會理解物理刪除,只會將其標記爲deleted,當數據愈來愈多的時候,在後臺自動刪除