我正在使用Elasticsearch Bulk API来创建或更新文档.
我确实知道它们是创建还是更新,但我可以通过简单地将它们全部化index
,或者在SQL意义上"upserts" 来简化我的代码.
使用index
(并让ES弄清楚)使用更明确的create
和update
?
如果您要发送create
,则必须确保文档在索引中尚不存在,否则调用将失败,而发送相同文档index
将始终成功.
然后,如果出于性能原因,您知道您将创建一个文档(使用create
或者index
),然后您只更新几个属性,那么使用update
可能有意义.
否则,如果您总是发送完整的文档,我会一直使用它index
来创建和更新.每当它看到一个index
动作时,ES将创建文件(如果它不存在)或替换它(如果它存在),但该调用将始终成功.
简短的回答:没有缺点.
创建和更新端点是特殊情况.使用create,如果文档已经存在,则您无需执行任何操作.如果您没有文档的所有数据,只需添加一些字段,通过更新,您可以提供更少的数据.您还可以确保文档仅在已经存在更新的情况下编制索引.