Запрос из кибана в питоне? - PullRequest
0 голосов
/ 05 апреля 2019

Я запускаю небольшой скрипт на Python для создания небольшого GET по запросу, который я сделал в Kibana.В настоящее время в Кибане я получаю список IP-адресов со счетом: enter image description here

Я хотел бы получить эту информацию на Python, и я уже пробую с поиском, но я не уверен, чтобыпонять.

Вот запрос в Кибане:

    GET /_search
{
  "size": 0,
  "query": {
      "range": {
        "@timestamp": {
          "gte": 1552922613804,
          "lte": 1552923513804,
          "format": "epoch_millis"
        }
      }
    },
  "aggs": {
    "2": {
      "significant_terms": {
        "field": "origin.keyword",
        "size": 300
      }
    }
  }
}

Можно ли создать такой же запрос в python?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Вот как вы можете запросить ES и преобразовать результаты в CSV:

from elasticsearch import Elasticsearch, helpers
import csv
es = Elasticsearch([“Server”])
query={"query": {"query_string" : {"query" : “(something: True)“}}}
index=[“Index”]
l=[]
with open('my.csv','w') as out:
    csv_out=csv.writer(out)
    csv_out.writerow([‘my’, ‘header’])
    for i in index:
        res=es.search(index=i,doc_type="core-config",body=query,_source_include=[“my”, “header”],size="10000")
        for indexes in res['hits']['hits']:
            l.append((indexes['_source’][‘my’],indexes['_source’][‘header’]))
        set_keyid=list(set(l))
        for lis in set_keyid:
            csv_out.writerow(lis)
1 голос
/ 05 апреля 2019

Да, просто конвертируйте ваш запрос, чтобы Python мог его понять.Если у вас есть настройки аутентификации для эластичного, вам нужно будет также пройти проверку подлинности.(имя пользователя, пароль) в качестве кортежа.Добавьте это к запросам как (auth = (имя пользователя, пароль))

import json
import requests

HEADERS = {
    'Content-Type': 'application/json'
}

uri = "[insert your endpoint]"+"/_search"

query = json.dumps({
  "size": 0,
  "query": {
      "range": {
        "@timestamp": {
          "gte": 1552922613804,
          "lte": 1552923513804,
          "format": "epoch_millis"
        }
      }
    },
  "aggs": {
    "2": {
      "significant_terms": {
        "field": "origin.keyword",
        "size": 300
      }
    }
  }
})

r = requests.get(uri,headers=HEADERS, data=query).json()
print(r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...