首页 > 编程语言 >一个使用Python加密连接Elasticsearch的简单封装

一个使用Python加密连接Elasticsearch的简单封装

时间:2024-05-21 22:52:57浏览次数:22  
标签:body 封装 get Python self return Elasticsearch obj def

依赖:

elasticsearch==7.17.9

eshelpercore.py:

#!/usr/bin/python3
# coding=utf-8
import datetime
import os
import ssl

from elasticsearch import Elasticsearch


def get_env() -> str:
    # 这里指定查询的环境索引
    return "uat"


def get_output_file_path(filename) -> str:
    return "/etc/zabbix/zabbix_agentd.d/" + filename


class ElasticObj:
    def __init__(self):
        os.environ['ELASTIC_CLIENT_APIVERSIONING'] = "true"
        ssl_context = ssl.create_default_context(cafile="./elasticsearch-ca.pem")
        ssl_context.check_hostname = False

        self.es = Elasticsearch(hosts=["127.0.0.1"],

                                http_auth=('username', 'password'),
                                port=9200,
                                ssl_context=ssl_context,
                                scheme="https",
                                # use_ssl=True, verify_certs=True,
                                )

    def get_by_query(self, query, fetch_size=None):
        body = {'query': query}
        if fetch_size is not None:
            body['fetch_size'] = fetch_size
        return self.es.sql.query(body=body)

    def get_by_cursor(self, cursor: str):
        return self.es.sql.query(body={"cursor": cursor})

    def get_by_body(self, index, body):
        return self.es.search(index=index, body=body)


def get_select_list_by_stamp(begin, end):  # 秒时间戳
    from_obj = datetime.datetime.fromtimestamp(begin)
    to_obj = datetime.datetime.fromtimestamp(end)
    select_list = []
    days = (to_obj - from_obj).days
    if days == 0:
        select_list = [to_obj.strftime("%Y-%m-%d")]
    else:
        while days >= 0:
            from_str = from_obj.strftime("%Y-%m-%d")
            select_list.append(from_str)
            days -= 1
            from_obj = from_obj + datetime.timedelta(days=1)
    return select_list


def get_dir() -> str:
    return os.path.dirname(os.path.abspath(__file__))

 

标签:body,封装,get,Python,self,return,Elasticsearch,obj,def
From: https://www.cnblogs.com/JackieJK/p/18205116

相关文章

  • python 监控AIDA64 实现高温警报
    importwinreg,winsound,pyttsx3,os,functoolsengine=pyttsx3.init()engine.setProperty('volume',1)#设置音量(0到1之间)rate=engine.getProperty('rate')#设置语速engine.setProperty('rate',rate-50)voices=engine.getProperty('vo......
  • 强化学习Q-learning算法——Python实现
    Q-learning是一种基于值迭代的强化学习(ReinforcementLearning,RL)算法,主要用于在给定环境中学习一个策略,使得智能体(agent)能够在与环境交互的过程中获得最大累计奖励。它通过学习一个状态-动作值函数(Q函数)来指导智能体的行为选择,适用于各种离散状态和动作的任务环境。Q-learning在......
  • python实现ONVIF协议抓取华为摄像头图像
    参考文档:配置摄像机ONVIF协议参数-SDC10.0C系列产品文档-华为机器视觉(huawei.com) 配置摄像机ONVIF协议参数1)登录摄像机Web界面,选择“配置>视音频>视频”,将“编码协议”设置为“H.264”2)进入“网络平台对接”配置,选择“第二协议参数>ONVIF”,进入ONVIF协议参数......
  • elasticsearch存储经纬度且按照范围进行查询
    elasticsearch存储经纬度且按照范围进行查询背景:我在客户那边有很多舆情事件数据,数据里面包含的是有经纬度的,项目需求是用户在系统中输入一个地址,系统就可以查询到该地址100米500米1000米范围内的事件信息,当然了还可以输入事件的关键信息做模糊查询,所以我选择了使用es来存储......
  • selenium安装教程python
    安装Selenium的步骤主要包括准备Python环境、安装Selenium、安装浏览器驱动以及验证安装。准备Python环境:访问Python官网并下载适合你操作系统的Python版本。安装Python,并确保在安装过程中将Python添加到环境变量中,以便在命令行中运行Python命令。安装完成后,在命令行中输......
  • python中那些双下划线开头得函数和变量
    Python中下划线---完全解读Python用下划线作为变量前缀和后缀指定特殊变量_xxx不能用frommoduleimport*导入__xxx__系统定义名字__xxx类中的私有变量名核心风格:避免用下划线作为变量名的开始。因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程......
  • Python教程: 反射及常用的几种方法
    反射就是通过字符串映射或修改程序运行时的状态、属性、方法有四个常用方法:hasattr(obj,name_str)判断一个obj对象是否有对应name_str的方法getattr(obj,name_str)根据字符串name_str获取Obj对象中对应方法的内存地址setattr(obj,key,value)为对象Obj新增或修改属性......
  • Python教程:拆分多级目录的方法
    实现多级目录差分,举例说明如下:假设现有的目录结构如下:1、2、2.1、2.2、2.3、2.4、3、4、5、6、6.1、6.1.1、6.1.2、6.1.3、6.1.4、6.2、6.3、6.4、7、8、9、10。经过差分后,得到的各级目录为:一级目录:1、2、3、4、5、6、7、8、9、10二级目录:2.1、2.2、2.3、2.4和6.1、6.2、6......
  • mac anaconda pycharm python3.6 tensorflow 1.1.0
     condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/osx-arm64/condacreate-npy36python=3.6     ps:当加载卡住的时候,强制退出存在下载的包都消失的情况......
  • ES(Elasticsearch)入门-深入索引操作
    1.创建索引使用PUT请求。结构PUT/${index_name}//索引名称{"settings":{...索引相关的配置项目,如何:分配个数副分片个数等},"mappings":{...数据的结构}}-----------------------------------实例---------------------------......