Python 将Elasticsearch结果导出到CSV文件中
我正在尝试将使用以下查询找到的结果导出到我桌面上的CSV中 这是我第一次使用Elasticsearch和cURL,所以我不知道该怎么做Python 将Elasticsearch结果导出到CSV文件中,python,python-3.x,curl,
elasticsearch,export-to-csv,Python,Python 3.x,Curl,
elasticsearch,Export To 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=
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中
我一直在阅读这个关于如何做到这一点的链接,但我不知道如何让我的查询做到这一点-()
有人可以帮助我,并告诉我如何转换我的查询导出一个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模块写入数据 根据您给出的输出,我假设您希望将数据从
\u 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)
你能给出打印输出(文档)吗?有几行将完成我发布的查询,我已经编辑了一些代码,比如我正在搜索的内容。你需要原始代码吗。唯一的区别是列名。我更新了我原来的帖子时的输出和原来的代码现在。谢谢你看。我正在努力将我的代码转换为CSV格式导出结果。当您在上面编写代码并打印结果时,最后在for循环中,需要输出以了解数据是如何来的。感谢您的快速回复,你看过我的更新文章和我的更新代码了吗?你能告诉我如何用我的代码添加你的代码吗?我有很多错误获取[status:N/A request:8.984s]回溯(最近一次调用):文件“C:\Users\AppData\Local\Programs\Python\Python 36-32\lib\site packages\urllib3\util\connection.py”,第60行,在socket.getaddrinfo(主机、端口、系列、socket.SOCK_流)中为res创建_连接:文件“C:\Users\\AppData\Local\Programs\Python\Python36-32\lib\socket.py”,第745行,在getaddrinfo中为res创建_socket.getaddrinfo(主机、端口、系列、类型、协议、标志):socket.gairro:[Errno 11004]getaddrinfo在处理上述异常时失败,出现了另一个异常:很抱歉,我看到了我犯的错误,我修复了它并运行了查询,它创建了CSV文件,但文件中没有数据,我也收到了一个名为Traceback的错误(最近一次调用):文件“C:/Users/.PyCharmCE2017.2/config/scratch/test1.py”,第26行,在w=csv.DictWriter(f,my_dict.keys())中name错误:名称“my_dict”没有定义顺便说一句,我只想说谢谢你帮助我,我一直在看其他例子来让这篇文章与专栏一起工作,所以我可能稍后再发一篇文章,但如果我们能做到这一点,我将不胜感激!