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