2
まず、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"は役に立ちません。
P.S.
ここで私はおそらく削除バッチを使用するには、このコードをリファクタリングすることができますが、私は間違っているかを理解したいです私は公式のPythonクライアントを使用しています
すべてのドキュメントを削除した後でsleep()を2秒間追加した場合、正常に機能しますか? –
また、代わりにインデックス全体を削除しないでください。 –
@Andreiスリープはキャッシュのための別の手がかりを助けます。どのキャッシュ? :)私はそれらのいくつかだけすべての文書を削除したくない –