### Description

It'd be lovely is a `filters` or `filter` agg that touches a `constant_keyword` would properly rewrite itself to `match_all` and `match_none` and "go fast", at least when it's at the root of the aggs tree. Theoretically it should "just work" but it doesn't seem to. Also! The `terms` agg should be able to act on there being only a single possible value. Maybe it can even act on the `match_all`/`match_none` nature of the `constant_keyword`. I'm not sure how, but it does feel like there are optimizations in there. Particularly when `terms` is the top level agg.
server/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/FiltersAggregatorTests.java
});
    }
    public void testDocValuesFieldExistsForDateWithoutData() throws IOException {
        docValuesFieldExistsNoDataTestCase(new DateFieldMapper.DateFieldType("f"));
    }
    public void testDocValuesFieldExistsForNumber() throws IOException {
        NumberFieldMapper.NumberType numberType = randomFrom(NumberFieldMapper.NumberType.values());
        NumberFieldMapper.NumberFieldType ft = new NumberFieldMapper.NumberFieldType(
            "f",
            numberType,
            true,
            false,
            true,
            true,
            null,
            Map.of(),
            null,
            false,
            null,
            null
        );
        docValuesFieldExistsTestCase(new ExistsQueryBuilder("f"), ft, true, i -> {
            final LuceneDocument document = new LuceneDocument();
            numberType.addFields(document, "f", i, true, true, false);
            return document;
        });
    }
    public void testDocValuesFieldExistsForNumberWithoutData() throws IOException {
        docValuesFieldExistsNoDataTestCase(
            new NumberFieldMapper.NumberFieldType(