python读取Elasticsearch指定字段demo

很多企业使用开源的elk框架
大多把数据直接扔到es中
实际环境中需要使用es的数据
官方有很多模式,这里随便画了一个demo
由于dsl语法不熟悉

# encoding: utf-8
from elasticsearch import Elasticsearch
import json
es = Elasticsearch([{'host':'192.168.163.22','port':9200}], http_auth=('elastic', 'xxxx'), timeout=3600)
query_json = {
  "_source": [
      "@timestamp",
      "dns.rrname",
      "client_ip",
      "dest_ip"#这里是你需要显示的字段,根据你的es定
      ],
  "query": {
    "bool": {
      "must": [
        [
          { "match_all": {} }
        ]
      ],
      "filter": [
        {
          "range": { "@timestamp": { "gte": "now-4h","lte":"now" } }#时间最近4小时
        },
        {
          "exists": { "field": "dns.rrname" }#存在某个字段
        }
      ]
    }
  }
}
query = es.search(index='wazuh-alert-3.x-*',body=query_json,scroll='15m',size=1000)

results = query['hits']['hits'] # es查询出的结果第一页
total = query['hits']['total']['value']  # es查询出的结果总量
scroll_id = query['_scroll_id'] # 游标用于输出es查询出的所有结果

for i in range(0, int(total/100)+1):
    # scroll参数必须指定否则会报错
    query_scroll = es.scroll(scroll_id=scroll_id,scroll='15m')['hits']['hits']
    results += query_scroll
    for res in results:
        #print(res["_source"]["dns"]["rrname"])
        print(res["_source"])

这里能跑出来数据
还有些问题没有理清楚,初学见谅!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个使用elasticsearch_dsl库的Python示例,用于执行基本的搜索操作: ```python # 导入所需的库和模块 from elasticsearch_dsl import connections, Search, Q # 创建与Elasticsearch集群的连接 connections.create_connection(hosts=['192.168.214.131'], port=9200, http_auth="elastic:ellischen") # 创建一个Search对象,并指定索引名称 search = Search(using=connections.get_connection(), index='books') # 构建查询条件 query = Q('match_all') # 设置查询条件 search = search.query(query) # 设置排序方式 search = search.sort('_id') # 执行搜索操作 response = search.execute() # 输出搜索结果 for hit in response: print(hit) ``` 这个示例首先使用`create_connection`方法创建与Elasticsearch集群的连接。然后,它创建一个`Search`对象,指定要搜索的索引名称。接下来,使用`Q`对象来构建查询条件,这里使用了`match_all`查询,表示匹配所有文档。然后,使用`sort`方法设置排序方式,这里按`_id`字段进行升序排序。最后,使用`execute`方法执行搜索操作,并迭代搜索结果进行输出。 请注意,你需要根据你的实际环境修改连接参数和索引名称。还可以根据需要添加其他的查询条件和排序方式。 希望这个示例对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python elasticsearch_dsl search_after翻页](https://blog.csdn.net/weixin_43632687/article/details/126404629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lefooter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值