【发布时间】:2016-04-06 23:41:26
【问题描述】:
我正在使用Elasticsearch Bulk API 创建或更新文档。
我确实知道它们是创建还是更新,但我可以通过将它们全部设为index 或 SQL 意义上的“upserts”来简化我的代码。
与使用更明确的create 和update 相比,使用index(并让ES 解决)有什么缺点吗?
【问题讨论】:
标签: elasticsearch elasticsearch-bulk
我正在使用Elasticsearch Bulk API 创建或更新文档。
我确实知道它们是创建还是更新,但我可以通过将它们全部设为index 或 SQL 意义上的“upserts”来简化我的代码。
与使用更明确的create 和update 相比,使用index(并让ES 解决)有什么缺点吗?
【问题讨论】:
标签: elasticsearch elasticsearch-bulk
如果您发送create,则必须确保该文档尚不存在于您的索引中,否则调用将失败,而使用index 发送相同的文档将始终成功。
然后,如果出于性能原因,您知道您将创建一个文档(使用create 或index),然后您只会更新几个属性,那么使用update 可能会有意义。
否则,如果您总是发送完整的文档,我会一直使用index 来创建和更新。每当看到index 操作时,ES 将创建文档(如果不存在)或替换它(如果存在),但调用将始终成功。
【讨论】:
简短的回答:不,没有缺点。
创建和更新端点是特殊情况。使用 create 如果文档已经存在,您什么也不想做。如果您没有文档的所有数据,您可以通过更新提供更少的数据,您可以添加一些字段。您还可以确保仅在更新时已对文档进行索引。
【讨论】: