在 ElasticSearch 中重新索引时忽略索引现有文档

Ignore indexing existing document while reindexing in ElasticSearch

我正在尝试在两个 ElasticSearch 之间移动数据 instances.Is 有一种方法可以跳过目标索引中已经存在的文档吗?

from opensearchpy import OpenSearch,RequestsHttpConnection, helpers
def reindex_data_to_data_curation_es(es_src, es_des):
    try:
        helpers.reindex(es_src, src_idx, tar_idx, target_client=es_des, query={'query': {'match_all': {}}})
    except Exception as e:
        print("timed out", str(e))

您不能从源索引中跳过它们,但是如果它们已经存在,您不能确保在目标索引中不覆盖它们。只需添加 op_type: create setting 即可不覆盖目标索引中的现有文档:

helpers.reindex(es_src, src_idx, tar_idx, target_client=es_des, op_type='create', query={'query': {'match_all': {}}})
                                                                       ^
                                                                       |
                                                                    add this