从elasticsearch检索数组中的列

时间:2018-09-06 03:51:17

标签: python-3.x pandas elasticsearch

我有:

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中加载所需的列,这更多的是elasticsearch {{1 }}而不是query

0 个答案:

没有答案