Elasticsearch使用curl命令执行查询报parsing_exception如何解决
问题原因
你当前使用的查询结构是Elasticsearch编程语言客户端的封装格式,包含index、body等客户端专属的封装字段,直接发给原生ES的_search接口时,ES无法识别这些字段,就会抛出解析异常。
具体修改点
- 索引配置直接放到请求URL中:把你需要查询的两个索引用英文逗号分隔,替换原有URL中的通用索引匹配规则
- 控制类参数改为URL查询参数:
ignore_unavailable、allow_no_indices直接作为URL的查询参数拼接,不要放在请求体中 - 简化请求体结构:删除请求体中的
index、ignore_unavailable、allow_no_indices、type、body外层字段,直接把原body内的查询内容作为请求体 - 修复curl命令换行问题:Linux终端中命令换行需要在行末加反斜杠
\,避免终端将换行识别为命令结束
修改后的正确curl命令
curl -u "*******:****************" -XGET "https://XXXXXXXXXXXXXXXXXXXXXXXXXX:9200/logstash-*2021.08.21*,logstash-*2021.08.22*/_search?ignore_unavailable=true&allow_no_indices=true" \ -H 'Content-Type: application/json' \ -d ' { "query": { "bool": { "must": [ { "range": { "@timestamp": { "gte": "now-24H/H" } } } ] } } } '
内容的提问来源于stack exchange,提问作者Zag Gol
相关产品推荐
相关产品推荐

