python使用elasticsearch查询

直接上代码

# -*- 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为拼接好的查询语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值