python - 如何使用python定期从弹性数据库中获取数据?

标签 python json linux mongodb timestamp

我需要每 4 分钟从 Elastic 数据库中获取数据,但我在如何修改下面提到的查询中的 @timestamp 变量方面遇到了问题,以便我可以推送适当的查询以从 URL 中获取数据。 我使用 Python 作为语言。

curl :

curl -XGET "URL" -H 'Content-Type: application/json' -k -u u_name:XXX -d'
            {
             "query": {
               "query_string": {
                  "query": "@timestamp:[2018-06-29T06:47:40.000Z TO *]"
                }
              },
              "size": 1000
            }
            '|json_pp )

我可以使用 CRON 每 7 分钟运行一次脚本,但我不明白如何修改上述查询中的 @timestamp 变量,以便我可以获得自上次运行以来的所有新数据。

任何输入都是有值(value)的。

最佳答案

您可以在 Bash 中使用命令 date 来格式化时间戳。

当前日期和时间

date +%Y-%m-%dT%H:%M:%S

# 2018-07-14T03:00:58

负 7 分钟

date --date '-7 min' +%Y-%m-%dT%H:%M:%S

# 2018-07-14T02:53:58

使用 `` (ticks/backticks) 你可以尝试把它放在 Bash 的其他命令中(但你很多人需要使用 "" 而不是 ' ' -d)

curl -XGET "URL" -H 'Content-Type: application/json' -k -u u_name:XXX -d'
            {
             "query": {
               "query_string": {
                  "query": "@timestamp:[`date --date \'-7 min\' +%Y-%m-%dT%H:%M:%S`.000Z TO *]"
                }
              },
              "size": 1000
            }
            '|json_pp )

如果您需要它作为 Python 代码,那么您可以使用页面 https://curl.trillworks.com/curl 转换为 requests,稍后您可以进行修改。

import requests
import datetime
import pprint # pretty print

#dt = datetime.datetime(2018, 6, 29, 6, 47, 40)

dt = datetime.datetime.now()

td_7mins = datetime.timedelta(minutes=7)

dt = dt - td_7mins # now - 7 minutes 

#timestamp = "@timestamp:[{}.000Z TO *]".format(now.strftime("%Y-%m-%dT%H:%M:%S"))
timestamp = dt.strftime("@timestamp:[%Y-%m-%dT%H:%M:%S.000Z TO *]")

data = {
    "query": {
        "query_string": {
            "query": timestamp
        }
      },
    "size": 1000
}
print(data)

url = "https://httpbin.org/get" # good for tests

r = requests.get(url, json=data, headers=headers, verify=False, auth=('u_name', 'XXX'))

pprint.pprint(r.json())

关于python - 如何使用python定期从弹性数据库中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51331994/

相关文章:

python - 如何在两个值之间随机选择?

python - 如何将参数传递给 Python 函数?

json - Mongoose:保存具有不同模式的嵌套 JSON

ios - 如何在 swift 2 中获取 json 数据时启动和停止事件指示器?

java - 如何在 Linux 上安装 Eclipse

python - 提高网页抓取的速度/性能,但有很多异常(exception)情况

python - Beautiful Soup 并通过 ID 提取 div 及其内容

json - 在 React 中进行 API 调用

linux - <() 在 Bash 中做什么?

Python 读取名为 PIPE