将Elasticsearch结果导出为CSV文件
我试图将使用以下查询找到的结果导出到我的桌面上的CSV中。将Elasticsearch结果导出为CSV文件
这是我第一次使用Elasticsearch和cURL,所以我很困惑如何做到这一点。
from elasticsearch import Elasticsearch
es = Elasticsearch(["9200"])
# Replace the following Query with your own Elastic Search Query
res = es.search(index="search", body=
{
"_source": ["DTDT", "TRDT", "SPLE", "RPLE"],
"query": {
"bool": {
"should": [
{"wildcard": {"CN": "TEST1"}}
]
}
}
}, size=10)
for doc in res['hits']['hits']:
print(doc)
现在当我运行此查询返回戴夫名字,姓氏,地址,性别,我想把结果到CSV我的桌面上,当我运行查询。
我一直在阅读关于如何做到这一点,但林不知道如何让我的查询做此链接 - (https://docs.python.org/3/library/csv.html)
会有人帮助,告诉我怎么我的查询转换中导出CSV PLEASE !
感谢
输出我得到的是 -
{'_index': 'search', '_type': 'trades', '_id': '179299804977823744', '_score': 1.0, '_source': {'DTDT': '20170928', 'SPLE': '1001', 'RPLE': '1001', 'TRDT': '2017-09-28 17:01:19'}}
您可以使用CSV模块写入数据。
从您给出的输出中,我假设您要将_source
中的数据写入csv文件。
代码:
from elasticsearch import Elasticsearch
import csv
es = Elasticsearch(["9200"])
# Replace the following Query with your own Elastic Search Query
res = es.search(index="search", body=
{
"_source": ["DTDT", "TRDT", "SPLE", "RPLE"],
"query": {
"bool": {
"should": [
{"wildcard": {"CN": "TEST1"}}
]
}
}
}, size=10)
with open('mycsvfile.csv', 'w') as f: # Just use 'w' mode in 3.x
header_present = False
for doc in res['hits']['hits']:
my_dict = doc['_source']
if not header_present:
w = csv.DictWriter(f, my_dict.keys())
w.writeheader()
header_present = True
w.writerow(my_dict)
你能告诉我如何用我的代码添加你的代码吗? – Rich
@Rich - 检查更新 –
我得到了很多错误 GET http:// 9200:9200/search/_search?size = 10 [status:N/A request:8.984s] Traceback(最近一次调用最后一次) : 对于res中的文件“C:\ Users \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ urllib3 \ util \ connection.py”,第60行,create_connection 012.zip ,端口,家族,socket.SOCK_STREAM): – Rich
能否请您给打印(DOC)的输出?几条线会做 –
我发布的查询我编辑了一些代码,如我正在寻找的。你需要原始代码吗?唯一的区别是列名。当输出和原始代码现在我已经更新了我原来的帖子。谢谢你看看。即时通讯努力将我的代码转换成CSV导出结果。 – Rich
当您在上面的代码并打印结果时,最后在for循环中,需要该输出来了解数据如何到来。 –