将Elasticsearch结果导出到CSV文件

我试图将使用以下查询找到的结果导出到我的桌面上的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时转换我的查询!

谢谢

我得到的输出是-

{'_index': 'search', '_type': 'trades', '_id': '179299804977823744', '_score': 1.0, '_source': {'DTDT': '20170928', 'SPLE': '1001', 'RPLE': '1001', 'TRDT': '2017-09-28 17:01:19'}}

回答:

您可以使用csv模块写入数据。

从您给出的输出中,我假设您要将数据从中写入_sourcecsv文件。

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)

以上是 将Elasticsearch结果导出到CSV文件 的全部内容, 来源链接: utcz.com/qa/432301.html

回到顶部