直接上代码
# -*- coding: utf-8 -*-
# ElasticSearch
import json
import traceback
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
ES_HOST = 'xx.xx.xx.xx’ # ip
ES_USER = 'elastic' # 用户名
ES_PASSWD = 'password’ # 密码
class ElasticSearch():
def __init__(self):
self.es = None
self.error_list = []
self.es = Elasticsearch([ES_HOST], http_auth=(ES_USER, ES_PASSWD), port=9200, timeout=300)
def get_index(self):
"""
获取全部索引
:return:
"""
stats = self.es.indices.stats()
return list(stats['indices'].keys())
def get_data(self, index, querydic):
exists_index = self.get_index()
data_list = []
if index in exists_index:
try:
page = self.es.search(index=index, scroll='5m',
body=json.dumps(querydic), request_timeout=300)
sid = page['_scroll_id']
scroll_size = page['hits']['total']['value']
while scroll_size > 0:
sid = page['_scroll_id']
scroll_size = len(page['hits']['hits'])
for data in page['hits']['hits']:
data_list.append(data['_source'])
page = self.es.scroll(scroll_id=sid, scroll='5m', request_timeout=300)
self.es.clear_scroll(sid)
except Exception:
traceback.print_exc()
return data_list
def get_page(self, index, querydic):
exists_index = self.get_index()
page = {}
if index in exists_index:
try:
page = self.es.search(index=index, body=json.dumps(querydic), request_timeout=300)
except Exception:
traceback.print_exc()
return page
def count(self, index, querydic):
count = 0
try:
count = self.es.count(index=index, body=json.dumps(querydic),
request_timeout=300)
count = count['count']
except Exception:
traceback.print_exc()
return count
index为索引名,querydic为拼接好的查询语句