【发布时间】:2018-09-05 19:53:50
【问题描述】:
如何通过python对弹性搜索中的数据进行过滤和汇总。我通过 Kibana 界面手动创建了一个数据表可视化,并以 .csv 格式下载。现在我想用 python 做同样的事情。
例如,如果索引中有10个变量:v1,v2,v3,.. v10,那么如何得到一个数据表,可以用sql描述为:
select v2, count(v2)
from index
where v1 = "some value"
group by v2
到目前为止,我能够做到这一点:
from elasticsearch5 import Elasticsearch
user = 'xxx'
password = 'xxx'
url = 'xxx'
command = "%s:%s@%s:9200" % (user,password,url)
x = Elasticsearch(command)
# Get the count of documents
num = x.count(index='my_index')['count']
# Get documents filtered by v1
my_docs = x.search(index="my_index", body={"query": {"match": {'v1':'US'}}})
现在我想要的是从 my_docs 中仅选择变量 v2 并按 v2 分组以获取计数。抱歉,我不知道如何在不泄露用户凭据的情况下创建可重现的示例。
【问题讨论】:
-
尝试在 my_docs var 上循环,它是一个 json
-
@Lupanoide,虽然这可能有效,但我有两个问题 - 首先:我不想下载完整的文档(实际数据中的每个文档都包含 150 多个变量)。第二:我还不熟悉json,虽然我正在研究它。
标签: python elasticsearch kibana