上一篇,咱们介绍了什么是 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 过大的压力,反而形成性能降低。
系列文章