本文主要是介绍ES单条数据录入操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 录入数据时先在库里进行查询,如果数据存在的话,进行更新数据;如果库里面此条数据不存在的话,进行插入数据
- 以下是封装的完整代码可以参考
from elasticsearch import Elasticsearchurl = 'http://%s:%s/' % ('ip', 'port')
ES = Elasticsearch(url)query = {"query": {"bool": {"must": [],}}
}def search_from_es(query, index, doc_type='type'):""" 根据查询条件在ES中查找是否有对应的数据 """update_id = Nonesearch_result = Falseexception = Falsetry:res = ES.search(body=query, index=index, doc_type=doc_type)except Exception as e:exception = Trueelse:if res["hits"]["total"] > 0:hits = res["hits"]["hits"][0]update_id = hits["_id"]search_result = Truereturn search_result, update_id, exceptiondef load_data():doc = {'values':['1.1.1.1']} # 需要进行操作的那条数据index = 'index' # 索引名或者索引别名ip = doc['values'][0] # 可以识别数据唯一性的字段temp = {"term": {"values": ip}}query["query"]["bool"]["must"].append(temp)search_result, update_id, exception = search_from_es(query, index)if search_result:# 执行数据更新操作try:ES.update(index=index, doc_type='type', id=update_id, body={"doc": doc})except Exception as e:print(e)message = "Internal server error"code = 500status = 500elif exception:# 查询数据出现异常message = "Internal server error"code = 500status = 500else:# 执行数据插入操作try:ES.index(index=index, doc_type='type', id=update_id, body=doc)except Exception as e:print(e)message = "Internal server error: index"code = 500status = 500
这篇关于ES单条数据录入操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!