elasticsearch 7.4 常用API操作之JSON条件构建(一)

一、ES基本操作

1._cat

查看所有节点

GET _cat/nodes

查看ES健康状况

GET _cat/health

查看主节点

GET _cat/master

#查看所有索引 类似于MySQL的: show databases;

GET _cat/indices

2.保存一个索引文档

保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识
在 customer索引下的 external类型下保存 1号数据为

PUT customer/external/1
{
   
  "name":"Jone"
}

PUT和 POST都可以,POST新增。如果不指定 id,会自动生成 id。指定 #id就会修改这个数据,并新增版本号PUT可以新增可以修改。PUT必须指定 id;由于 PUT需要指定 #id,我们一般都用来做修改操作,不指定 id会报错。

3.查询文档

GET customer/external/1

结果:
{
“_index”: “customer”,//在哪个索引
“_type”: “external”,//在哪个类型
“_id”: “1”,//记录 id
“_version”: 2,//版本号
“_seq_no”: 1,//并发控制字段,每次更新就会+1,用来做乐观锁
“_primary_term”: 1,//同上,主分片重新分配,如重启,就会变化
“found”: true,
“_source”: {//真正的内容
“name”: “John Doe”
}
}

更新携带 ?if_seq_no=0&if_primary_term=1

4.更新文档

POST customer/external/1/_update
{
   
  "doc":{
   
    "name":"jone_new1103"
  }
}

或者

POST customer/external/1
{
   
  "name":"jone_new_post_2"
}

或者

PUT customer/external/1
{
   
  "name":"jone_new_post_3"
}

POST与PUT更新的不同:

POST操作会对比源文档数据,如果相同不会有什么操作,文档 #version不增加
PUT操作总会将数据重新保存并增加 version版本;
带_update对比元数据如果一样就不进行任何操作。
看场景;
对于大并发更新,不带 update;
对于大并发查询偶尔更新,带 update;对比更新,重新计算分配规则。

#更新同时增加属性
POST customer/external/1/_update
{
“doc”: {“name”:“jhon_s”,“age”:“14”}
}

#PUT和 POST不带_update也可以:

POST customer/external/1
{
“doc”: {“name”:“jhon_s”,“age”:“14”}
}

PUT customer/external/1
{
“doc”: {“name”:“jhon_s”,“age”:“14”}
}

5.删除文档

DELETE customer/external/1
DELETE customer

6.批量删除

先批量新增

POST customer/external/_bulk
{
   "index":{
   "_id":"1"}}
{
   "name": "John Doe" }
{
   "index":{
   "_id":"2"}}
{
   "name": "Jane Doe" }

语法格式:
{ action: { metadata }}
{ request body}}
{ action: { metadata }}
{ request body

#复杂实例:

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"} }

bulk API以此按顺序执行所有的 #action(动作)。如果一个单个的动作因任何原因而失败,
它将继续处理它后面剩余的动作。当 bulk #API返回时,它将提供每个动作的状态(与发送
的顺序相同),所以您可以检查是否一个指定的动作是不是失败了。

二.复杂搜索

1.样本测试数据导入,以便测试

文档下载地址:https://gitee.com/huangjun19921127_admin/dowin/blob/master/accounts.json

POST bank/account/_bulk
{
   
 这里就是你下载的测试数据,批量导入一下
}

说明:这是一份顾客银行账户信息的虚构的 #JSON文档样本。每个文档都有下列的schema
#(模式):

{
   
  "account_number": 0,
  "balance": 16623,
  "firstname": "Bradshaw",
  "lastname": "Mckenzie",
  "age": 29,
  "gender": "F",
  "address": 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的小蜗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值