我有:
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
}
显然我可以做到:
df[[1,5]] or
df[:,[1,5]]
或其他pandas
但是为此,我必须先加载整个dataframe
,如果dataframe
太大了怎么办?我不想用一个dataframe
来填满我的全部内存,因为我正在执行不同的任务,我只想从elasticsearch中加载所需的列,这更多的是elasticsearch
{{1 }}而不是query
。