两种查询方式
在将所有的检索条件全部放在url里
GET bank/_search?q=*&sort=account_number:asc 表示在banK索引下查询所有文档根据account_number正序
hits里有10条数据,总数是1000,可以看出ES默认做了分页。
我们以 /_cat/health 为例试一下:
索引一个文档(保存)
保存一条数据到哪个索引的哪个类型下,使用如下命令:
PUT /customer/external/1 在customer索引下的external类型下保存一条id为1的数据 数据可以如下所示: { "name":"BianEn" }
其实POST和PUT都可以,
POST新增如果不指定id,会自动生成id,指定id会修改这个id数据,并新增版本号。
PUT可以新增可以修改,新增修改都必须指定id,不指定id会报错,我们一般使用PUT的方式。
我们再修改id为1的数据试试:
查询文档
GET /customer/external/1 查询customer索引下的external类型下id为1的数据
怎么使用_seq_no来控制并发呢?
?if_seq_no=1 _primary_term也同理,如?if_seq_no=1&if_primary_term
我们模拟两次更新请求,第一次肯定可以,因为上面我们查询了_seq_no就是1,第二次请求肯定失败了,因为被第一次改了_seq_no的值会变化不再是1:
第一次:成功
第二次:失败
更新文档
除了前面新建文档时候也可以更新文档意外ES还提供了单独更新的接口:
POST /customer/external/1/_update 与新建文档的方式更新文档不同的地方是这个方式更新相同的值version和seq_no都不会增加 { "doc":{ "name":"测试更新" } }
可以看到更新的json数据多了一层doc
删除文档
DELETE /customer/external/1
还可以删除索引 DELETE /customer
但是不支持删除类型
Bulk批量
在索引下的类型下做批量操作
POST /customer/external/_bulk
{"index":{"_id":"1"}} {"name":"张三"} {"index":{"_id":"2"}} {"name":"李四"}
表示在customer索引下的external类型保存两条文档:(上面这个数据不是个正经的JSON,PostMan就没办法测试了,我们使用Kibana测试)
在整个ES下做批量操作
POST /_bulk
{"delete":{"_index":"website","_type":"blog","_id":"123"}}
{"create":{"_index":"website","_type":"blog","_id":"123"}}
{"title":"my first blog post"}
{"index":{"_index":"website","_type":"blog"}}
{"title":"my second blog post"}
{"update":{"_index":"website","_type":"blog","_id":"123"}}
{"doc":{"title":"my updated blog post"}}
标签:customer,index,进阶,28,blog,文档,external,ElasticSearch,id From: https://www.cnblogs.com/cheng8/p/17281569.html