index,create,update都是可以实现插入功能的,但是实现原理并不完全相同。
create
- 如果待插入文档指定了文档_id,就检查文档_id是否存在,存在则插入失败。
index
- 如果待插入文档指定了文档_id,就检查文档是否存在,不存在就插入,存在就检查_version。
- 如果待插入文档没有指定了_version,文档的_version递增;如果待插入文档指定了_version,与原文档_version一致,覆盖成功,否者插入失败。
update
- 每次update都会获取整个文档信息,然后对特定字段进行修改,这也导致会遍历一遍原始文档,性能会有很大的影响。
由于Lucene中的update其实就是覆盖替换,并不支持针对特定Field进行修改,Elasticsearch中的update为了实现针对特定字段修改,在Lucene的基础上做了一些改动。
网友评论