弹性搜索更新随机失败,总计 = 0 成功=0 失败=0



对现有 elasticsearch 文档执行更新时,我有时会得到一个_shards的结果输出,其中成功、总计和失败计数均为 0。大多数时候,它都会通过。

我应该如何解释 - 连接超时,节点临时可用?我应该如何解决它?(只是再试一次?

我怀疑这是由于我的单个 ES docker 容器开发设置不兼容使用某些连接参数,但希望这应该是一个受支持的用例。

例如:更新结果:

{'_shards': {'successful': 0, 'total': 0, 'failed': 0}, 
'_version': 2, 
'_type': 'foo', '_index': 'foo_v1', '_id': 'AWO25xdEbiEvQ_s5I_35'
}

我正在连接到与客户端在同一主机上运行的单个 ES docker 容器。我的 ES 连接参数如下,我将它们与 python elasticsearch 客户端一起使用:

"es": {
"hosts": ("http://localhost:9200",),
"http_auth": None,
"password": None,
"use_ssl": False,
"verify_certs": True,
"sniff_on_start": True,
"sniff_on_connection_fail": True,
"sniffer_timeout": 60
},

更新请求示例:

update_res = es.update("foo_v1", doc_type="foo", id=the_id, body=patch_data)

这是在 Elasticsearch 2.4 上

如果 Elasticsearch 确定您的更新实际上不会导致文档更改,您收到的响应是您应该期待的: https://www.elastic.co/guide/en/elasticsearch/reference/2.4/docs-update.html#_detecting_noop_updates

要验证是否正在发生这种情况,您可以将detect_noop: false选项添加到更新中,这将强制服务器始终重新索引文档,即使您的更新实际上没有更改任何内容。验证您是否不再获得 0/0/0 结果,增强您对一切正常的信心,然后收回detect_noop选项,以免执行不必要的重新索引。:)

最新更新