码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python分页爬取es日志,获取数据


     这里是分页爬取数据,判断msgId重复的数据,并写入文件。这里终点参考分页的方式

    此处是根据下面的代码判断数据是否读取完成的:

    1. # 检查是否有更多结果需要滚动
    2. scroll_id = query.get('_scroll_id')
    3. if scroll_id is None or len(query['hits']['hits']) == 0:
    4. break
    5. # 使用滚动ID进行下一次滚动查询
    6. query = es.scroll(scroll_id=scroll_id, scroll='25m')

    完整代码 

    1. from elasticsearch import Elasticsearch
    2. es = Elasticsearch(hosts="http://XXXX:9200/", http_auth=('elastic', '密码'))
    3. scroll_id = None
    4. fileName = "order-info-repeat" + ".txt"
    5. msgIdList = []
    6. msgIdListRepeat = []
    7. total=0
    8. repeatTotal=0
    9. query_json = {
    10. "_source": ["message", "logger_name", "@timestamp"],
    11. "query": {
    12. "bool": {
    13. "filter":
    14. [
    15. {
    16. "bool":
    17. {
    18. "filter":
    19. [
    20. {
    21. "multi_match":
    22. {
    23. "lenient": True,
    24. "query": "rocketMQ syncPassengerOrderCnosumer topicList",
    25. "type": "phrase"
    26. }
    27. }
    28. ]
    29. }
    30. },
    31. {
    32. "range":
    33. {
    34. "@timestamp":
    35. {
    36. "format": "strict_date_optional_time",
    37. "gte": "2023-07-27T02:30:00.000Z",
    38. "lte": "2023-07-27T04:00:00.000Z"
    39. }
    40. }
    41. }
    42. ],
    43. "must":
    44. [
    45. ],
    46. "must_not":
    47. [
    48. ],
    49. "should":
    50. [
    51. ]
    52. }
    53. }
    54. }
    55. query = es.search(index='indexName索引名称', body=query_json, scroll='25m', size=5000,request_timeout=2000000)
    56. while True:
    57. for k in query['hits']['hits']:
    58. timestr = k['_source']['@timestamp']
    59. result = k['_source']['message']
    60. orderIdStart = result.find('order_id') + 11
    61. orderIdEnd = orderIdStart + 19
    62. orderId = result[orderIdStart:orderIdEnd]
    63. msgIdStart = result.find('msgId:') + 7
    64. msgIdEnd = msgIdStart + 32
    65. msgId = result[msgIdStart:msgIdEnd]
    66. if msgId in msgIdList:
    67. msgIdListRepeat.append(msgId)
    68. repeatTotal=repeatTotal+1
    69. print("repeat,msgId:"+msgId+",orderId:"+orderId)
    70. with open(fileName, 'a+', encoding='utf-8') as f2:
    71. f2.writelines("repeat,msgId:"+msgId+",orderId:"+orderId + "\n")
    72. f2.close()
    73. msgIdList.append(msgId)
    74. total=total+len(query['hits']['hits'])
    75. print("total:"+str(total)+",repeatTotal:"+str(repeatTotal)+",len:"+str(len(query['hits']['hits'])))
    76. # 检查是否有更多结果需要滚动
    77. scroll_id = query.get('_scroll_id')
    78. if scroll_id is None or len(query['hits']['hits']) == 0:
    79. break
    80. # 使用滚动ID进行下一次滚动查询
    81. query = es.scroll(scroll_id=scroll_id, scroll='25m')

  • 相关阅读:
    IPO解读丨转向国内帐篷市场,泰鹏智能能否抓住露营经济的红利?
    数据库随堂笔记(6)ᝰ数据库设计
    需求开发到一半需要改别的分支的bug该怎么办呢?(git stash 和 git commit)
    什么???CSS也能原子化!
    易点易动固定资产管理系统:2023年市场主流的选择
    LeetCode Cookbook 数组习题(6)
    pandas读取csv数据、使用set_index函数把多个数据列转化为多层行索引(keys参数指定需要被转化的多个数据列列表、形成多层行索引)
    SpringBoot快速入门(黑马学习笔记)
    Python Flask 离线环境的搭建
    电脑屏幕花屏怎么办?5个方法解决问题!
  • 原文地址:https://blog.csdn.net/bxp1321/article/details/133325972
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号