当前位置: 首页 > news >正文

python查询elasticsearch 获取指定字段的值的list

from elasticsearch import Elasticsearch
from datetime import datetime, timedelta# 1.connect to Elasticsearch------------------------------------------------------------------------------------------------------
# prod连接到 Elasticsearch
es_of_prod = Elasticsearch('http://host:port', http_auth=("username", "pwd"), verify_certs=False, timeout=60)# 2.构建KQL-----------------------------------------------------------------------------------------------------------------------
# 查询index
index_of_query = "index-name"
# 获取当前时间并减去1小时
current_time = datetime.now()
previous_hour_time = current_time - timedelta(hours=1)
# 格式化为 "年-月-日 时"
previous_hour_time_formatted = previous_hour_time.strftime("%Y-%m-%d %H")
# 格式化为 "年-月-日 时:分"
previous_hourAndMin_time_formatted = previous_hour_time.strftime("%Y-%m-%d %H:%M")
# 构建 KQL 查询字符串
kql_query_xxx_prod = 'context:"*{query String}*" AND ext.time:"*'+previous_hour_time_formatted+'*"'
# 构建 KQL 查询字符串
kql_query_xxx_prod_hourAndMin = 'context:"*{query String}*" AND ext.time:"*'+previous_hourAndMin_time_formatted+'*"'
print(f"query condition: {kql_query_xxx_prod_hourAndMin}")# 3.构建KQL JSON------------------------------------------------------------------------------------------------------
# 当天 0 点
zero_today = current_time.replace(hour=0, minute=0, second=0, microsecond=0)
# 当天 24 点(直接取次日 0 点)
midnight_24 = zero_today + timedelta(days=1)
#环境情况:sit env:es version7.5.1,prd env:es version7.15.1,下面query_json在sit环境可以使用,在prd环境不能使用
kql_query_xxx_json = {"query": {"bool": {"must": [{"query_string": {"query":kql_query_xxx_prod_hourAndMin,"default_field": "*"  # 搜索所有字段}},{"range": {"@timestamp": {"gte": zero_today,  # 当天00:00:00"lt": midnight_24,   # 第二天00:00:00"time_zone": "+08:00"  # 指定时区(如北京时间)}}}]}}
}
# 4.es执行查询获得hits count大小---------------------------------------------------------------------------------------------------
previous_hour_xxx_count = es_of_prod.count(index = index_of_query,body = kql_query_xxx_json
)
print(f"previous_hour_xxx_count: {previous_hour_xxx_count['count']}")# 5.执行查询,获取某个字段的value的list----------------------------------------------------------------------------------------------
query_body = {"query_string": {"query": kql_query_xxx_prod_hourAndMin,"default_field": "*","analyze_wildcard": True,"lenient": True}
}
#size=10000,如果不设置size,默认只返回前10条数据
try:response = es_of_prod.search(index = index_of_query,query = query_body,size=10000)total = response['hits']['total']['value']print(f"获取到total:{total}")traceids = [hit['_source']['ext.traceId'] for hit in response['hits']['hits']]print(f"获取到{len(traceids)}条traceid记录")#可以遍历traceids,做后续的业务处理
except Exception as e:print(f"查询异常: {str(e)}")traceids = []

相关文章:

  • 安卓蓝牙frameworks/base/core/java/android/bluetooth这个路径下文件的作用
  • java day14
  • [Java恶补day2] 49. 字母异位词分组
  • 深入理解 Pre-LayerNorm :让 Transformer 训练更稳
  • Java虚拟机栈
  • leetcode hot100刷题日记——7.最大子数组和
  • 计算机视觉与深度学习 | Python实现CEEMDAN-ISOS-VMD-GRU-ARIMA时间序列预测(完整源码和数据)
  • 目标检测基础知识
  • 目标检测135个前沿算法模型汇总(附源码)!
  • vue项目启动报错(node版本与Webpack)
  • vue-cli 构建打包优化(JeecgBoot-Vue2 配置优化篇)
  • MEMO数据DID与ZK技术:赋能RWA代币化与可信流通的新基石
  • C++ 01.vscode配置c++开发环境
  • C++语法理解记录
  • 安卓开发用到的设计模式(1)创建型模式
  • 缺乏经验的 PCB 过孔建模方法
  • NIFI的处理器:JSLTTransformJSON 2.4.0
  • 基于LiveData和ViewModel的路线管理实现(带PopupWindow删除功能)
  • 【神经网络与深度学习】流模型的通俗易懂的原理
  • Simon J.D. Prince《Understanding Deep Learning》
  • 如何给wordpress文章部分内容加密/seo免费优化工具
  • 猪八戒网怎么做网站/关键词搜索量怎么查
  • 惠州网站建设米普可思/黄石市seo关键词优化怎么做
  • 郑州那个公司做网站好/网络营销的六大特征
  • 邯郸网站设计招聘网/官方百度app下载安装