我正在尝试将使用以下查询找到的结果导出到桌面上的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)
现在,当我运行此查询时,它会返回dave的名称,姓氏,地址和性别,我想在运行查询时将结果放入桌面上的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'}}
答案 0 :(得分:1)
您可以使用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)