26.ElasticSearch的初步使用

_cat

GET /_cat/nodes   查看所有节点
GET /_cat/health   查看es健康状况
GET /_cat/master  查看主节点
GET /_cat/indices  查看所有索引

我们以 /_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"}}

 

posted @ 2023-03-30 23:19  lucsa  阅读(23)  评论(0编辑  收藏  举报