elasticSearch修改数据

Elasticsearch几乎能实时提供数据操作和搜索功能。默认情况下,从开始索引/更新/删除数据到出现搜索结果的时间可以认为需要一秒的时间。这是与SQL等其他平台的重要区别,其中数据在事务完成后可以立即使用。

在上节中我们给索引创建了一个文档,命令为

PUT /customer/_doc/1?pretty
{
  "name": "John Doe"
}

如果不存在id为1的文档,索引中将新建一个文档id为1,如果索引中在之前已经存在id为1的文档,新文档将覆盖历史文档。如果我们存入的文档id和已存在的文档id都不相同将不会影响。索引文档时,ID部分是可选的。如果未指定,Elasticsearch将生成一个随机ID,然后用它来索引文档。示例如下,注意这里使用关键词post而不是put因为我们没有指定ID。


1.更新文档内容。

我们不仅能索引和替换文档,还可以更新文档内容,但请注意,Elasticsearch实际上并没有在原文档进行就地更新。无论何时我们进行更新,Elasticsearch都会删除旧文档,索引一个新文档来立刻替换它。示例如下

1.通过替换名字来更新文档。

POST /customer/_doc/1/_update?pretty
{
  "doc": { "name": "Janeee Doe" }

}

2.将名称字段更改为“Jane Doe”并同时向其添加年龄字段来更新我们以前的文档(ID为1)

POST /customer/_doc/1/_update?pretty
{
  "doc": { "name": "Jane Doe", "age": 20 }
}


3.更新也可以通过使用简单的脚本来执行。本示例使用脚本将年龄增加5:

POST /customer/_doc/1/_update?pretty
{
  "script" : "ctx._source.age += 5"

}

在上面的例子中,ctx._source引用了即将更新的当前源文档。

Elasticsearch提供了在查询条件下更新多个文档的能力(如SQL UPDATE-WHERE语句),

具体可以参考https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-update-by-query.html

2.删除文档


删除文档也很简单

DELETE /customer/_doc/2?pretty

我们也可以在官网查看删除相关api 地址https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-delete-by-query.html

3.批量处理

除了能够索引,更新和删除单个文档之外,Elasticsearch还提供了使用_bulk API批量执行上述任何操作的功能。此功能非常重要,因为它提供了一种非常高效的机制,尽可能快地完成多项操作,尽可能少的网络往返。_bulk API的地址为https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-bulk.html

示例如下

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

上述命令在调用在一次批量操作中索引两个文档(ID 1 - John Doe和ID 2 - Jane Doe)。现在我们使用批量操作更新第一个文档并删除id为2的文档

POST /customer/_doc/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}
请注意,对于删除操作,后面没有对应的源文档,因为删除操作只需要删除文档的标识。批量API不会因其中一个操作失败而失败。即不支持事务,如果一个动作因任何原因失败,它将继续处理其后的其余动作。当批量API返回时,它将为每个操作提供一个状态(按照它发送的相同顺序),以便您可以检查特定操作是否失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值