Elasticsearch系列-文档基本操作

简单的文档操作

Index(创建文档)

//通过_doc创建一个文档 通过_id传递id参数,不传id会默认生产,如果文档已存在,会先进行删除在创建,版本会增加。
PUT /<target>/_doc/<_id> 
POST /<target>/_doc/

//通过_create创建一个文档,_id参数必传。如果文档已存在会报错
PUT /<target>/_create/<_id>
POST /<target>/_create/<_id>

示例:
//创建id为1 的文档
POST layne-index-002/_doc/1
{
  "name":"layne",
  "age":"27"
}

//创建id为3的文档
PUT layne-index-002/_create/3
{
  "name":"layne",
  "age":"27"
}

我们可以通过_doc和_create两种API方式来创建文档,主要区别在于_doc可以不需要强制指定_id参数,_create必须指定_id参数;_doc在创建文档的时候,如果文档已存在,会先进行删除再创建。而_create则会直接报错,提示创建失败。

Get(获取文档)

//通过id获取文档信息
GET <index>/_doc/<_id>
//通过id检测文档是否存在
HEAD <index>/_doc/<_id>
//通过id获取原数据信息
GET <index>/_source/<_id>
//通过id检测原数据信息是否存在
HEAD <index>/_source/<_id>

Delete(删除文档)

//根据id删除文档信息
DELETE /<index>/_doc/<_id>
//根据条件进行删除
POST /<index>/_delete_by_query

示例:
//删除id为2的文档
DELETE layne-index-002/_doc/2

//删除名称为layne的文档信息
POST layne-index-002/_delete_by_query
{
  "query":{
    "term":{
      "name":"layne"
    }
  }
}

Update(更新文档)

//通过id修改文档信息 id文档信息必须存在,否则会失败
POST /<index>/_update/<_id>
//根据条件修改文档信息
POST /<index>/_update_by_query

示例
//根据id为4修改文档信息,如果文档中字段存在就更新,不存在则新增,如果数据信息和存储的信息一致,返回结果result字段会是“noop”。
POST layne-index-002/_update/4
{
  "doc": {
    "name":"Nacy",
    "age":"18",
    "gender":"F"
  }
}

//根据条件修改
POST layne-index-002/_update_by_query
{
  "script": {
    "source": "ctx._source['name'] = 'Layne'",
    "lang": "painless"
  }
  , "query": {
    "term": {
      "name": "nacy"
    }
  }
}

复杂的文档操作

mget(批量获取)

//批量获取 通过docs指定index 和id
GET /_mget
//指定index批量获取
GET /<index>/_mget

示例:
//分别获取layne-index-001,layne-index-002索引id为1的文档信息
GET /_mget
{
  "docs":[
    {
      "_index":"layne-index-001",
      "_id":"1"
    },
    {
      "_index":"layne-index-002",
      "_id":"1"
    }
    ]
}
//分别获取layne-index-001,layne-index-002索引id为1的文档信息
GET /layne-index-002/_mget
{
  "docs":[
    {
      "_index":"layne-index-001",
      "_id":"1"
    },
    {
      "_index":"layne-index-002",
      "_id":"1"
    }
    ]
}
//获取layne-index-002索引id为1和2的文档信息
GET /layne-index-002/_mget
{
  "docs":[
    {
      "_id":"1"
    },
    {
      "_id":"2"
    }
    ]
}
//获取layne-index-002索引id为1和2的文档信息
GET /layne-index-002/_mget
{
  "ids":["1","2"]
}

Bulk(批量操作)

ES提供了一种批量操作方式,在一次请求中去执行多个操作操作,如index,create,delete,update。通过在请求体中定义一个JSON,通过换行来进行分隔。

action_and_meta_data\n
optional_source\n
action_and_meta_data\n
optional_source\n
....
action_and_meta_data\n
optional_source\n
POST /_bulk

POST /<target>/_bulk

示例:
//批量操作
POST _bulk
{"index":{"_index":"layne-index-003","_id":"1"}}
{"name":"Layne","age":27,"gender":"M"} //执行index create 直接通过json数据体传参
{"delete":{"_index":"layne-index-003","_id":"2"}}
{"create":{"_index":"layne-index-003","_id":3}}
{"name":"Nancy","age":28,"gender":"F"}
{"update":{"_index":"layne-index-003","_id":1}}
{"doc":{"favorite":"ball"}} //执行update操作时 通过doc传参数

结语

其实ES官网文档中,提供了很多API的样例,更多内容可以参考ES文档操作API

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Layne_lei

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

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

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

打赏作者

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

抵扣说明:

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

余额充值