上一篇,咱們介紹了什麼是 Elasticsearch,它能作什麼用以及基本概念(索引 Index、文檔 Document、類型 Type)理解。這篇主要對 文檔的基本 CRUD 以及如何批量操做進行講解。下面讓咱們進入正題。html
1、文檔的 CRUE網絡
Create 文檔性能
支持自動生成文檔 Id 和指定文檔 Id 兩種方法code
#create document. 自動生成 Id POST songs/_doc { "name":"說好不哭", "author":"周杰倫", "price":3 } #create document. 指定Id。若是 Id 已經存在,報錯 PUT songs/_create/1 { "name":"說好不哭", "author":"周杰倫", "price":3 }
Get 文檔orm
#找到文檔 Get songs/_doc/1 result: { "_index" : "songs", "_type" : "_doc", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "name" : "說好不哭", "author" : "周杰倫", "price" : 3 } }
Index 文檔htm
Index 也是用於建立文檔的方法,和 Create 不一樣有一些不一樣,若是文檔不存在狀況,直接建立新文檔,否者刪除原來的文檔,新文檔被索引,_version 版本加一。blog
PUT songs/_doc/1 { "name":"說好不哭", "author":"周杰倫", "price":0 } result: { "_index" : "songs", "_type" : "_doc", "_id" : "1", "_version" : 2,//+1 "result" : "updated", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }
Update 文檔索引
#在原文檔上增長字段 POST songs/_update/1 { "doc":{ "update" : "2019-05-15T14:12:12" } } GET songs/_doc/1 { "_index" : "songs", "_type" : "_doc", "_id" : "1", "_version" : 3, "_seq_no" : 2, "_primary_term" : 1, "found" : true, "_source" : { "name" : "說好不哭", "author" : "周杰倫", "price" : 0, "update" : "2019-05-15T14:12:12" } }
Delete 文檔文檔
#Delete by Id #刪除文檔 DELETE users/_doc/1
Bulk 批量操做get
POST _bulk { "index" : { "_index" : "test1", "_id" : "1" } } { "field1" : "value1" } { "delete" : { "_index" : "test1", "_id" : "2" } } { "create" : { "_index" : "test2", "_id" : "3" } } { "field3" : "value3" } { "update" : { "_index" : "test1","_id" : "1"} } { "doc" : {"field2" : "value2"} }
mget 批量讀取
顧名思義就是能夠對不一樣索引的文檔進行批量讀取,只須要提供索引名稱和 Id 就能夠在一次 API 中所有讀取,減小網絡開銷。
GET /test1/_mget { "docs" : [ { "_id" : "1" }, { "_id" : "2" } ] }
msearch 批量查詢
一樣 ES 也提供了 msearch 對不一樣索引進行批量查詢。
# msearch 操做 POST kibana_sample_data_ecommerce/_msearch {} {"query" : {"match_all" : {}},"size":1} {"index" : "kibana_sample_data_flights"} {"query" : {"match_all" : {}},"size":2} 注:kibana_sample_data_ecommerce 能夠在 kibana 的樣例數據,須要手動點擊添加。
本篇主要對文檔的 CRUD 以及批量操做 API 進行講解。在這裏提一點,批量操做能夠幫助咱們提升對 API 調用性能,但若是一次提交過多數據,也是有可能會致使 ES 過大的壓力,反而形成性能降低。
系列文章