将如下代码中按需做下替换即可

$ip  替换成es的ip;
$port 替换成es的端口;
$user 替换成es的用户;
$password 替换成es的密码;

# coding: gbk
# 模型数据匹配文件
import datetime
import os
from elasticsearch import Elasticsearch, helpers
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
def conn_es():
    '''
    es连接方法,带有用户名密码连接
    :return:

    '''

    es=Elasticsearch(hosts="$ip", port=$port, sniff_on_start=True,
                             sniff_on_connection_fail=True,
                             sniff_timeout=60,
                             http_auth=('$user', '$password'),
                             timeout=120)
    print('当前es环境 $ip:$port')
    return es

def get_data_from_es(es, index, doc_type="doc", body={"query": {"match_all": {}}}, scroll='5m', timeout='1m', size=1000):
    '''
    es7分页方法
    :param es:
    :param index:
    :param doc_type:
    :param body:
    :param scroll:
    :param timeout:
    :param size:
    :return:
    '''
    query_data = es.search(
        index=index,
        scroll=scroll,
        timeout=timeout,
        size=size,
        body=body
    )
    result_data = query_data.get("hits").get("hits")
    if not result_data:
        return []
    scroll_id = query_data["_scroll_id"]
    total = query_data["hits"]["total"]["value"]
    for i in range(int(total / 1000)):
        res = es.scroll(scroll_id=scroll_id, scroll='5m')
        result_data += res["hits"]["hits"]
    l = [i["_source"] for i in result_data]

    return l

def copy_index_es(from_index,doc_type):
    '''
    es表复制备份方法
    :param from_index: 需要备份表名字
    :param to_index:新表名字
    :return:
    '''
    es=conn_es()
    body = {
        "query": {
            "match_all": {

            }
        }
    }
    data = get_data_from_es(es=es, index=from_index, doc_type=doc_type, body=body)
    data_key_tuple = [tuple(k) for k in data][0]
    data_value_list_all = []
    for i in data:
        data_value = []
        for k, v in i.items():
            data_value.append(v)
        data_value_list_all.append(tuple(data_value))
    crdt = datetime.datetime.now()
    crdt_str = crdt.strftime("%Y%m%d%H%M%S")
    to_index=from_index+'_bak'+crdt_str
    actions = [{'_op_type': 'index', '_index': to_index, '_type': doc_type,
                '_source': dict(zip(data_key_tuple, item))} for item
               in data_value_list_all]
    print(u'开始备份表',from_index,u'===>',to_index,u'当前时间',crdt)
    helpers.bulk(es, actions)
    crdt_after = datetime.datetime.now()
    crdt_after_str = crdt_after.strftime("%Y%m%d%H%M%S")
    print(u'备份表', from_index, u'===>', to_index,u'完成,', u'当前时间', crdt_after_str)

def delete_data_index(index_name):
    '''
    es表清空数据的方法
    :param index_name: 需要清空数据的index
    :return:
    '''
    es = conn_es()
    body = {
        "query": {
            "match_all": {

            }
        }
    }
    data = get_data_from_es(es=es, index=index_name, doc_type="doc", body=body)
    crdt = datetime.datetime.now()
    crdt_str = crdt.strftime("%Y%m%d%H%M%S")
    print(u'开始清空表', index_name, u'当前时间', crdt)
    es.delete_by_query(index=index_name, body=body)
    crdt_after = datetime.datetime.now()
    crdt_after_str = crdt_after.strftime("%Y%m%d%H%M%S")
    print(u'清空表', index_name, u'完成,', u'当前时间', crdt_after_str)

if __name__ == '__main__':
    print(u'以下是python操作es的各种方法')
    print(u'1.以当前时间备份index')
    #copy_index_es('piccvou_piccappdata','doc')
    print(u'2.清空index数据,不删除表结构')
    #delete_data_index('piccvou_piccappdata_bak20200921134456')