我希望有人能解释我为什么会遇到这个问题:我想在启动ES(在7.4版中)查询之前对其进行验证,如果查询中没有 aggs ,则一切正常子句,但是,如果查询中包含 ggs ,则ES表示这是无效查询,令我疯狂的是,该查询在ES中工作正常,但同时ES告诉我这不是有效查询。
我认为是因为ES不能使用 aggs 验证查询,但是我想“确定”,我已经阅读了文档,但没有发现任何线索。
非常感谢。
这是我要验证的ES查询的示例
"query": {
"bool": {
"must": [
{
"match_phrase": {
"probe_id": {
"query": "probe id"
}
}
}
]
}
},
"aggs": {
"agg_by_hours": {
"terms": {
"field": "hours",
"size": 24,
"order": {
"_term": "desc"
}
}
}
}
}```
答案 0 :(得分:4)
validate query API仅支持query
部分,而不支持aggs
部分。没什么,甚至没有_source
,sort
,from
和size
。您也可以在source code中看到它。
如果您将?explain=true
添加到URL,则会看到类似以下的解释:
{
"valid" : false,
"error" : "org.elasticsearch.common.ParsingException: request does not support [aggs]"
}
因此,您可以肯定地验证查询,但只使用query
部分,就可以了。