Сброс данных в панду df

1

Я пытаюсь получить более 10 000 наблюдений от эластичного поиска и сбросить их в рамки данных панд:

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)

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

Изображение 174551

Я хочу преобразовать это в кадр данных pandas, как показано ниже: - Изображение 174551

  • 1
    опубликовать пример вывода. Как вы хотите, чтобы ваш df выглядел как
  • 1
    Есть ли причина не использовать pd.read_json ()? pandas.pydata.org/pandas-docs/stable/generated/...
Показать ещё 5 комментариев
Теги:
pandas
python-3.x
elasticsearch

2 ответа

1
Лучший ответ

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

сначала установить

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

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

  • 0
    Можете ли вы привести это в пример, как теоретически я знаю, но не в состоянии выполнить

Ещё вопросы

Сообщество Overcoder
Наверх
Меню