in utils/es.py [0:0]
def copy_docs_from_to(client: Elasticsearch, source_index: str, dest_index: str, max_docs: int):
"""
Copy documents from one index to the other.
:param client: ES client.
:param source_index: source index with the documents to be copied to a new index.
:param dest_index: destination index for the documents.
:param max_docs: max number of documents to copy.
:return: True if the number of documents is the same in the new index as it was in the old index.
"""
print("Copying documents from {} to {}...".format(source_index, dest_index))
if not client.indices.exists(index=source_index):
print("Source index {name} does not exist. Program will end.".format(name=source_index))
exit(0)
if max_docs != -1:
resp = client.reindex(source={"index": source_index}, dest={"index": dest_index}, refresh=True,
max_docs=max_docs)
else:
resp = client.reindex(source={"index": source_index}, dest={"index": dest_index}, refresh=True)
if resp["updated"] > 0:
print("WARNING: Out of {} documents from the index {}, {} of them were discarded.\n".format(resp["total"],
source_index,
resp[
"updated"]))
return False
else:
print(
"All {} documents taken from index {} were successfully placed to index {}.\n".format(resp["total"],
source_index,
dest_index))
return True