问题:我有一个应用程序,只有在对整个文档进行验证后,才能始终将对文档的更改持久保存到ElasticSearch中。所以我总是要检索完整的文件!部分更新是否更好然后关于性能的完全更新还有其他任何好处吗?
partial update的Elasticsearch文档提到文档是不可变的,而内部部分更新(如完全更新)会重新索引整个文档。
在外部,似乎我们正在部分更新文档。但是,在内部,更新API只管理相同的retrieve-change-reindex进程
文档还提到了以下内容,我认为这是“部分更新完全更新的好处”,但我不明白。如果碎片A中有文档,我会对其进行全面更新,或者对一个请求进行部分更新。多个请求在这里意味着什么?
不同之处在于此过程在分片中发生,从而避免了多个请求的网络开销
答案 0 :(得分:3)
如上所述,partial update
和full update
使用retrieve-change-reindex
进程进行更新。
但区别在于:
使用Partial Update
的{{1}}通过单个客户端请求获得update API
,而使用retrieve-change-reindex
的{{1}}需要单独的full update
和index API
请求,这就是get
有多个请求的网络开销的原因。