у меня есть:
1 2 3 4 5
1 55 4 8 7
8 6 80 40 1
У меня есть pandas
dataframe
, сохраненные в elasticsearch
index
, каждая строка является документом.
Теперь я хочу получить все столбцы, которые есть в списке [1,5]
т.е. выход должен быть:
1 5
1 7
8 1
Когда я делаю:
from elasticsearch import Elasticsearch
from pandas.io.json import json_normalize
res = es.search(index="index_name", body={ "query": {"match_all": {}}})
df = json_normalize(res['hits']['hits'])
Я получаю dataframe
, но я не хочу загружать его полностью, просто хочу получить определенные столбцы, как мне это сделать?
Возможно, это не поможет мне полностью, но будет сделано только через фильтр ES filter-term-array
ОБНОВЛЕНО
Документы на ES похожи на:
{
"_index": "index_name",
"_type": "dataframe",
"_id": "0",
"_score": 1,
"_source": {
"1": 1,
"2": 55,
"3": 4,
"4": 8,
"5": 7,
"index": 0
}
ОБНОВЛЕНИЕ 2
Очевидно, я могу сделать:
df[[1,5]] or
df[:,[1,5]]
или что-то еще с pandas
Но для этого я должен сначала загрузить весь свой dataframe
, что если dataframe
слишком велик? Я не хочу заполнять всю мою память одним dataframe
, так как у меня разные задачи, я просто хочу загрузить необходимые столбцы из эластичного поиска, это больше вопрос elasticsearch
query
, чем pandas
.