问题描述
使用 python 库,我尝试对 Elasticsearch 索引执行以下操作:
我正在使用 batch
API 从几个不同的来源收集文档。甚至可能在一个批次内,某些文档可能会被分配相同的 id,并且在某些情况下应该替换具有相同 id 的现有文档。
出于某种原因,似乎无法检查较低版本或seq_no
,而只能检查具体值。然而,在我的情况下,这已经足够了,幸运的是我只有两个案例。
因此,如果我发现某个文档具有更高的优先级,我想在批处理正文中为其分配 _seq_no:1
,否则为 0
并在批处理正文中添加 _if_seq_no:0
。
_body = { '_op_type': 'update','_if_seq_no': 0,'_index': INDEX,'_id': None,'_seq_no': None,'_source': {'doc': { ... } }
}
在提供批量更新的生成器中,我替换了 _body['_id']
和 _body['_seq_no']
。
这是我如何解决问题的想法,尤其是在阅读this recent unresolved discussion之后。
但是,此时我收到以下错误:
raise HTTP_EXCEPTIONS.get(status_code,TransportError)(elasticsearch.exceptions.RequestError: RequestError(400,'action_request_validation_exception','Validation Failed: 1: ifSeqNo is set,but primary term is [0];2: ifSeqNo is set,but primary term is [0];3: ifSeqNo is set,but primary term is [0];4: ifSeqNo is set,but primar...
我是否遵循了明智的方法,您是否有关于如何完成它的建议?
顺便说一下,如果不存在具有相应 ID 的文档,update
是否有效?在我使用 create
之前,它显示 create operations do not support compare and set. use index instead
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)