Сброс данных в панду df - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь получить более 10000 наблюдений с помощью упругого поиска и помещаю их в кадр данных pandas: -

es_index = "logstash-2018.08.26"
documento = "your_doc_type"


body = {"from": 0, "size": 100,
    "query": {
        "constant_score" : {
            "filter" : {
                 "bool" : {
                    "must" : [{
              "range": {"@timestamp" : {
                "gte": "2018-08-26T14:00:08.000Z", 
                "lte": "2018-08-26T16:00:00.000Z"

            }}
          }],
                   "filter": [
                        {"term"  :{"type" :"vx_apache_json"}},
                        {"term"  :{"api" :"viv_signin.php"}},
                        {"term"  :{"domain":"fnwp"}}




                   ]
                 }}}}}

res = helpers.scan(
                client = es,
                scroll = '2s',
                query = body, 
                index = es_index)

и когда я пытаюсь получить значение res, я получаю

<generator object scan at 0x10c89a938>

Когда я использовал следующий код ..

for i in res:
 print(i)

Я получаю данные в следующем формате

enter image description here

Я хочу преобразовать это во фрейм данных панд, как показано ниже: - enter image description here

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Я могу предложить вам лучший способ сделать это .. Я думаю, вы пытаетесь получить более 10000 записей .. попробуйте следующий способ, и вы также получите миллионы записей :: -

первая установка

from elasticsearch_dsl import Search

1.) Определите своего клиента

client = Elasticsearch(['http://localhost:9200'])

2.) search = Search(using=client)

3.) Проверьте общее количество попаданий

results = search.execute()
results.hits.total

4.) s = Search(using=client)

5.) Запишите ваш запрос

s = s.query(..write your query here...)

6.) Выгрузить данные во фрейм данных с помощью сканирования ... При сканировании будут сброшены все данные в ваш фрейм данных, даже если они исчисляются миллиардами, поэтому будьте осторожны.

results_df = pd.DataFrame((d.to_dict() for d in s.scan()))

7.) Посмотрите на ваш фрейм данных и улыбнитесь:)

results_df
0 голосов
/ 29 августа 2018

Сохраните все данные в переменной, а затем преобразуйте эту переменную во фрейм данных, используя pd.DataFrame (YourVariable).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...