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})