Elasticsearch:批量上传

oknrviil  于 2023-08-03  发布在  ElasticSearch
关注(0)|答案(1)|浏览(139)

假设我的每个文档都有(至少)两个字段:我想执行一个(批量)操作,如果文档不存在,将创建A和B字段,但如果文档存在,将只覆盖B。我试着跟随:
第一个月
{"doc": {"B": some_val}, "upsert": {"A": another_value}}
其行为如下:如果文档已经存在,字段B将被覆盖(这就是我想要的)。但如果文档不存在,则只使用字段A创建它。我想用A和B创建它。
我不能完全覆盖文档,因为它可能还有更多的字段(除了A和B),我不想在这个操作中触及。另外,我不喜欢使用脚本,因为它们速度较慢,而且过去它们给我带来了许多错误。我搜索了文档,但没有找到任何提示。
谢谢你,谢谢

qzlgjiam

qzlgjiam1#

你可以这样做,即。通过在upsert文档中指定AB

{"update": {"_id": my_id, "_index": index_name, "retry_on_conflict": 30}}
{"doc": {"B": some_val}, "upsert": {"A": another_value, "B": some_val}}

字符串
使用doc_as_upsert: true在您的情况下不起作用,因为如果文档存在,您不想覆盖A

相关问题