[英]How to disable query cache?
首先,很抱歉没有100%明确地质疑标题。 用几行代码来解释就更容易了:
query = {...}
while True:
elastic_response = elastic_client.search(elastic_index, body=query, request_cache=False)
if elastic_response["hits"]["total"]) == 0:
break
else:
for doc in elastic_response["hits"]["hits"]:
print("delete {}".format(doc["_id"]))
elastic_client.delete(index=elastic_index, doc_type=doc["_type"], id=doc["_id"])
我进行搜索,然后删除所有文档,然后再次进行搜索以获得下一组。
但是搜索查询给了我相同的文档! 这会导致404删除异常。 它必须是某种缓存,但是我什么也没找到,“ request_cache”无济于事。
我可能可以重构此代码以使用批处理删除,但是我想了解这里有什么问题
PS我正在使用官方的python客户端
如果在删除后使用sleep()
会使文档消失,那么这与缓存无关。 这是关于refresh_interval
和接近实时性或Elasticsearch 。
因此,在代码离开for
循环之后,请调用_refresh
。 另外,不要逐个文档删除文档,而是创建一个_bulk
请求,在_bulk
请求中,您可以批量删除所有文档,具体取决于它们的数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.