Right now filter aggregations run in "compatible" mode if the top level query is `bool: {filter: { match_all: {}}}}` - but this really just just `match_all` in disguise. We should just run in filter-by-filter mode here.
server/src/main/java/org/elasticsearch/common/Rounding.java
if (unit.isMillisBased) {
                    if (timeUnit.isMillisBased) {
                        return (double) unit.ratio / timeUnit.ratio;
                    } else {
                        throw new IllegalArgumentException(
                            "Cannot use month-based rate unit ["
                                + timeUnit.shortName
                                + "] with non-month based calendar interval histogram ["
                                + unit.shortName
                                + "] only week, day, hour, minute and second are supported for this histogram"
                        );
                    }
                } else {
                    if (timeUnit.isMillisBased) {
                        throw new IllegalArgumentException(
                            "Cannot use non month-based rate unit ["
                                + timeUnit.shortName
                                + "] with calendar interval histogram ["
                                + unit.shortName
                                + "] only month, quarter and year are supported for this histogram"
                        );
                    } else {
                        return (double) unit.ratio / timeUnit.ratio;
                    }
                }
            }
            @Override
            public abstract String toString();
        }
        private class FixedToMidnightRounding extends TimeUnitPreparedRounding {