其他分享
首页 > 其他分享> > es7.+(一)检索

es7.+(一)检索

作者:互联网

1.初步检索

1.1_cat

GET /_cat/nodes: 查看所有节点
GET /_cat/health:查看es健康状况
GET /_cat/master:查看主节点信息
GET /_cat/indices:查看所有索引相当于mysql的showdatabase

1.2索引一个文档(保存)

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

    {
        "name": "JSON Doe"
    }
{
    "_index": "customer",//数据在哪个索引下
    "_type": "external",//在哪个类型下
    "_id": "1",//数据的id
    "_version": 2,//数据的版本,每更新一次版本都会升级
    "result": "created"//新建    //第二次是为"updated",
    "_shards": { //分片
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 1,
    "_primary_term": 2
}

其实这个请求还支持使用POST方式发送,路径和上面一样的时候结果一致,

POST可以不带ID发送(不带最后的 /1),ES会自动生成一个ID,如果再次请求也会再次新增一个ID

PUT方式如果不带ID将会出现405错误:请求方式不允许PUT 必须带id

1.3查询文档

GET customer/external/1

{
    "_index": "customer", //在哪个索引
    "_type": "external", //在哪个类型
    "_id": "1",  //记录id
    "_version": 2,  //版本号
    "_seq_no": 1,  //并发控制字段,每次更新就会+1,用来做乐观锁
    "_primary_term": 2,  //同上,主分片重新分配,如重启,就会变化
    "found": true,
    "_source": {
        "name": "jack"
    }
}
更新携带 ?if_seq_no=0&if_primary_term=1  乐观锁机制

1.4乐观锁演示

两个put语句后面都跟上?if_seq_noi=1&if_primary_term=1
并发控制号(seq_noi=1)

当第一个修改后seq_no变为2,那么另外一个就不能更新了

第二个更新就报错

相当于mysql的乐观锁操作

1.5更新文档

带_update

使用后缀_update明确表明这是一个文档更新命令
POST customer/external/1/_update

{
  "doc":{
    "name":"John Doew"
  }
}

如果更新数据和上次的一模一样那么不会更新数据的版本号,序列号,result也会显示“noop”

不带_update

POST customer/external/1

{
  "name":"john Doe2"
}

或者
PUT customer/external/1

PUT和POST(不带_update)都会直接更新数据,版本号序列号都会发生改变

1.6删除文档&索引

DELETE customer/external/1 //删除文档
DELETE customer //删除索引

es没有提供类型(type)的删除,如果要删除只能删除整个index,所以7+版本将type弃用了

1.7bulk批量API

POST customer/external/_bulk

{"index":{"_id":"1"}}
{"name": "JSON Doe"}
{"index":{"_id":"2"}}
{"name": "Jone Doe"}
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"}}

批量操作中的每一个操作相互独立,可以独立成功或失败,彼此没有影响。

标签:es7,检索,.+,index,blog,customer,external,type,id
来源: https://www.cnblogs.com/psyduck/p/14470633.html