在Elasticsearch中验证聚合查询

4
我希望有人能解释一下我遇到的问题:我想在启动查询之前验证ES(版本为7.4)查询,如果查询没有aggs条款,一切正常,但是如果查询有aggs ,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"
                    }
                }
            }
        }
    }```
1个回答

4

验证查询 API仅支持query部分,不支持aggs部分。甚至包括_sourcesortfromsize等,都不被支持。你也可以在源代码中看到这个限制。

如果你在URL后面添加?explain=true,你将会看到一个解释:

{
  "valid" : false,
  "error" : "org.elasticsearch.common.ParsingException: request does not support [aggs]"
}

所以你可以肯定地验证你的查询,但只需采用query部分即可。


非常感谢@Val的回答和指出源代码,我很感激。 - Francisco Moreno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接