Elasticsearch bool查询格式错误求助:400解析异常
Elasticsearch查询语法错误排查
原始查询代码
search = { "from": str(start), "size": str(size), "query": { "bool": { "must": { "multi_match": { "query":query, "fields":["name","description","tags","comments","created","creator","transaction","wallet"], "operator":"or"} }, "filter": { "term": { "channel": channel } } } } }
触发错误
elasticsearch.BadRequestError: BadRequestError(400, 'parsing_exception', '[bool] malformed query, expected [END_OBJECT] but found [FIELD_NAME]')
问题根源
核心错误是**from和size参数被转成了字符串类型**,Elasticsearch要求这两个分页参数必须是整数,字符串会导致JSON解析异常,进而触发bool查询格式错误的提示(实际是前置类型错误引发的连锁问题)。你的multi_match和filter逻辑本身是合法的。
修正后的代码
将from和size改为整数类型即可,若原始start/size是字符串,需先转为整数:
# 若start/size来自字符串输入,先转换: # start = int(start) # size = int(size) search = { "from": start, "size": size, "query": { "bool": { "must": { "multi_match": { "query": query, "fields": ["name","description","tags","comments","created","creator","transaction","wallet"], "operator": "or" } }, "filter": { "term": { "channel": channel } } } } }
验证要点
- 确认
start和size是整数类型,无额外字符串包裹 - 保持
bool查询的must和filter结构不变,这部分逻辑符合Elasticsearch语法规范
内容的提问来源于stack exchange,提问作者Leroy Livingston
相关产品推荐
相关产品推荐

