Elastic Search创建文档和更新文档

Elastic Search创建文档和更新文档(Put && Update)

在平时的es中需要对文档创建或者更新,通常情况下有2种api实现,举例如下:
第1种:PUT /testindex/testtype/id
第2种:post /testindex/testtype/id/_update (partial update)

第1种 是首先是创建,再次执行就是更新,如下:
创建一个 索引为testindex,类型为testtype,文档id为10的数据

PUT /testindex/testtype/10
{
	"textField1":"This is aaaaa",
	"textField2":"This is bbbbb"
}

然后我需要对textField1进行修改,如果单单对一个字段进行修改,必须要将第2个字段一起写上,否则将会丢掉第2个字段,正确修改如下:

PUT /testindex/testtype/10
{
	"textField1":"This is bbbbb-update",
	"textField2":"This is bbbbb"
}

如果使用第2种的话,只需针对某一个字段进行修改就可以了

POST /testindex/testtype/10/_update
{
	"doc":{
		"textField1":"This is bbbbb-update"
	}
}

partial update相较于第一种全量替换其实是一样的,都是首先内部获取document然后将传过来的field更新到document的json中,将老的document标记为deleted,最后修改后的document创建出来,所以version会变。
只是他优点在于,所有的查询,修改和写回操作,都发生在es中的一个shard内部,避免了所有的网络数据传输的开销(减少2次网络请求),大大的提升了性能,并减少并发的情况。如果说同时几个操作执行第一种api时,有可能一个还没更新完,会被后一个替代掉某个字段的值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值