使用dump将搜索查询的输出转储为json文件不起作用

时间:2017-10-04 17:26:00

标签: python elasticsearch

我一直在尝试将elasticsearch查询的结果转储到文件中,但python只显示错误消息。这是我的代码:

import json
count=0
keyword_array = []

with open('localFile','r') as my_keywordfile:
for keyword in my_keywordfile.readlines():
    keyword_array.append(keyword.strip().strip("'"))
with open( 'localFile', 'wb') as f:
    for x in keyword_array:
        doc = {
                        "query": {                                
                                "multi_match": {
                                    "query": x,
                                    "type": "phrase",
                                    "fields":"_all",    

                                }
                        }

              }

        res = es.search(index='dbgap_062617', body=doc)
        json.dump(res, f)

f是以“w”模式打开的文件,res是搜索查询的输出。 这是我看到的错误;

TypeError: a bytes-like object is required, not 'str'

然后,我用

更改了代码
json.dump(''.join(res), f)

和此:

json.dump(str(res), f)

但是,同样的错误!有谁知道为什么会这样?如果我使用转储它可以工作,但我听说我们不应该使用转储!

1 个答案:

答案 0 :(得分:0)

归功于@ user2357112。 "这是以wb模式打开的,而不是w模式。" Alos,我获得JSON字符串的原因是有效的,但JSON数据在" codebeautify.org/jsonviewer#"显然这些网站允许你只限制有限数量的字符,而我的文件没有完全加载。