我正在使用Elasticsearch Helpers Scan API输出索引中的所有批量记录。 我想先使用查询参数来过滤某些记录,然后使用扫描,我在此处参考扫描的标准文档。但是一旦我应用查询参数,它就会给我一个400错误。这是我的代码和错误。
脚本:
import elasticsearch
import elasticsearch.exceptions
import elasticsearch.helpers as helpers
import time
es = elasticsearch.Elasticsearch('XXX.XX.XX.XX'],retry_on_timeout=True)
scanResp = helpers.scan(client=es,scroll="5m",query={"match":{"channel_id": "34"}},index="my-index",timeout="10m",size=500)
resp={}
start_time = time.time()
for resp in scanResp:
data = resp
#print data.values()[3]
print("--- %s seconds ---" % (time.time() - start_time))
输出:
RequestError:TransportError(400, u'SearchPhaseExecutionException [无法执行阶段[init_scan], 所有分片都失败了; shardFailures {[lEAncRHvQHKpPqlfw1NWEQ] [DEV-godam] [0]: SearchParseException [[dev-godam] [0]:from [-1],size [-1]:Parse Failure [无法解析来源[{“match”:{“master_channel_id”:“34”}}]]]; 嵌套:SearchParseException [[dev-godam] [0]:从[-1],size [-1]:Parse 失败[没有解析元素[match]]]; } {[lEAncRHvQHKpPqlfw1NWEQ] [DEV-godam] [1]: SearchParseException [[dev-godam] [1]:from [-1],size [-1]:Parse Failure [无法解析来源[{“match”:{“master_channel_id”:“34”}}]]]; 嵌套:SearchParseException [[dev-godam] [1]:从[-1]开始,大小为[-1]:Parse 失败[没有解析元素[match]]]; } {[lEAncRHvQHKpPqlfw1NWEQ] [DEV-godam] [2]: SearchParseException [[dev-godam] [2]:from [-1],size [-1]:Parse Failure [无法解析来源[{“match”:{“master_channel_id”:“34”}}]]]; 嵌套:SearchParseException [[dev-godam] [2]:从[-1],size [-1]:Parse 失败[没有解析元素[match]]]; } {[lEAncRHvQHKpPqlfw1NWEQ] [DEV-godam] [3]: SearchParseException [[dev-godam] [3]:from [-1],size [-1]:Parse Failure [无法解析来源[{“match”:{“master_channel_id”:“34”}}]]]; 嵌套:SearchParseException [[dev-godam] [3]:从[-1],size [-1]:Parse 失败[没有解析元素[match]]]; } {[lEAncRHvQHKpPqlfw1NWEQ] [DEV-godam] [4]: SearchParseException [[dev-godam] [4]:from [-1],size [-1]:Parse Failure [无法解析来源[{“match”:{“master_channel_id”:“34”}}]]]; 嵌套:SearchParseException [[dev-godam] [4]:从[-1],size [-1]:Parse 失败[没有解析元素[match]]]; }]')
在互联网上查看但不确定我在这里做错了什么。
感谢任何帮助
答案 0 :(得分:2)
您的T *x
参数应该是字典而不是字符串并使用双引号而不是单引号,请尝试以下操作:
body