python操作es增删改查

1.查询(search)

# 获取案例库信息
@app.route('/get_dcn_cases', methods=['GET', 'POST'])
def get_dcn_cases():
    # 告警事件数据
    dcn_cases_query = {
        "_source": {
            "includes": ["faultName", "endTime", "startTime", "checked", "solution"],
        },
        "sort": {"timestamp": {"order": "desc"}},
        "size": 9999
    }
    res = es.search(index='dcn-cases', body=dcn_cases_query)
    res_hits = res['hits']['hits']
    dcn_cases_data = []
    for i in res_hits:
        i['_source']['id'] = i['_id']
        dcn_cases_data.append(i['_source'])

    print("dcn_cases_data:", dcn_cases_data)
    return jsonify({'dcn_cases_data': dcn_cases_data})

  2.增加

# 新增案例库到es里面
from elasticsearch import helpers
@app.route('/add_case_to_es', methods=['GET', 'POST'])
def add_case_to_es():
    # 获取前端传递的案例添加参数
    case_data = request.get_json()
    # 获取系统当前时间
    t = time.time()
    current_ts = int(round(t * 1000))
    # 格式化我们能看懂的时间
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(current_ts / 1000)))
    # 格式化es的可以看得懂的时间
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime((current_ts / 1000) - 28800)))

    case_data["timestamp"] = str(time.strftime('%Y-%m-%dT%H:%M:%S', time.localtime((current_ts / 1000) - 28800)))
    case_data["type"] = "case"
    app.logger.debug('case_data=%s', case_data)
    bulks = []
    _index = 'dcn-cases'
    _type = 'doc'
    bulks.append({
        "_index": _index,
        "_type": _type,
        "_source": case_data
    })

    helpers.bulk(es, bulks)
    # res_update = es.index(index='dcn-cases', doc_type='doc',  body=case_data)
    res_update = 1
    return jsonify({'res_update': res_update})

  3.删除(根据id来删除)(delete)

# 删除案例库里面的案例
@app.route('/del_case_to_es', methods=['GET', 'POST'])
def del_case_to_es():
    # 获取前端传递的案例添加参数
    del_id_data = request.get_json()
    app.logger.debug('del_id_data=%s', del_id_data)
    app.logger.debug('del_id_data=%s', del_id_data['del_id'])
    res_del = es.delete(index='dcn-cases', doc_type='doc', id=del_id_data['del_id'])
    return jsonify({'res_del': res_del})

  4.修改(update)

# 修改案例库
@app.route('/update_case_to_es', methods=['GET', 'POST'])
def update_case_to_es():
    # 获取前端传递的查询参数
    case_data = request.get_json()
    app.logger.debug('case_data=%s', case_data)
    case_id = case_data['case_id']
    # 移除字典中的id信息
    del case_data['case_id']
    res_update = es.update(index='dcn-cases', doc_type='doc', id=case_id, body={"doc": case_data})
    print(res_update['_shards']['successful'])
    return jsonify({'res_update': res_update})

  

posted @ 2020-06-18 16:37  GumpYan  阅读(1396)  评论(0编辑  收藏  举报