太强了!利用 Python 连接 ES 查询索引某个字段命中数的脚本!

当我们在工作中,如果频繁查询 Elasticsearch 某个索引中的某个字段命中的记录数量时,可以通过 Python 的 Elasticsearch 库来查询,从而提升工作效率。

代码大致思路如下:

第一步:从 elasticsearch 模块导入 Elasticsearch 类,该类是用来连接和操作 Elasticsearch

第二步:安装 Elasticsearch 库,若未安装 elasticsearch 模块,可执行:pip install elasticsearch命令进行安装

第三步:连接 Elasticsearch,定义 Elasticsearch 对象,并指定所要连接的 URL、端口、用户名、密码、超时时间

第四步:指定所要查询的索引,定义名为index_name的变量,值为:es 的索引名,在 Elasticsearch 中,索引是一个类似数据库的概念,用于存储数据

第五步:创建查询条件,定义名为query的字典,该字典包含了查询条件。

查询条件是一个bool类型的查询,其中包含了多个terms查询,每个terms查询是用来匹配commandId字段等于指定值的记录

第六步:执行查询并获取结果,使用es.search()方法执行查询,并将结果存储在results变量中。这个结果是一个字典,包含了查询的结果和其他相关信息

第七步:打印聚合统计信息,循环遍历结果字典中的aggregations字段,并打印每个commandId的值及其对应的记录总数

完整代码如下:
# 精准匹配多个指令ID,查询有多少条日志
from elasticsearch import Elasticsearch  
  
# 如果没有 elasticsearch 模块,执行如下命令进行安装。  
# pip install elasticsearch  
  
# 连接 Elasticsearch  
es = Elasticsearch(hosts="http://localhost:29204/", http_auth=("elastic", "elastic"), timeout=30)  
  
# 指定要查询的索引  
index_name = 'idc_payloadresult_20231204'  
  
# 查询条件  
query = {  
    "query": {  
        "bool": {  
            "must": [  
                {  
                    "terms": {  
                        "commandId": ["1024", "2048", "3072", "4096", "5120"]  
                    }  
                }  
            ],  
            "must_not": [],  
            "should": []  
        }  
    },  
    "from": 0,  
    "size": 10,  
    "sort": [],  
    "aggs": {  
        "commandId_counts": {  
            "terms": {  
                "field": "commandId",  
            },  
            "aggs": {  
                "total_count": {  
                    "sum": {  
                        "field": "total"  
                    }  
                }  
            }  
        }  
    }  
}  
  
# 执行查询并获取结果  
results = es.search(index=index_name, body=query)  
  
# 打印结果中的聚合统计信息,包括每个 commandId 的总数  
for bucket in results['aggregations']['commandId_counts']['buckets']:  
    print(bucket)


---------------------------END---------------------------

题外话

感谢你能看到最后,给大家准备了一些福利!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值