繁体   English   中英

如何禁用查询缓存?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM