验证Elasticsearch中的聚合查询

时间:2019-12-10 11:48:35

标签: elasticsearch elasticsearch-aggregation

我希望有人能解释我为什么会遇到这个问题:我想在启动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"
                    }
                }
            }
        }
    }```

1 个答案:

答案 0 :(得分:4)

validate query API仅支持query部分,而不支持aggs部分。没什么,甚至没有_sourcesortfromsize。您也可以在source code中看到它。

如果您将?explain=true添加到URL,则会看到类似以下的解释:

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

因此,您可以肯定地验证查询,但只使用query部分,就可以了。