**Elasticsearch version** (`bin/elasticsearch --version`): v7+

**Description of the problem including expected versus actual behavior**:

When used with an alias that has a filter, only the foreground set is filtered. The background set ignores the alias filter. This skews the results, especially when the user supplies an additional foreground filter, assuming the background filter will respect the alias filter.

**Steps to reproduce**:

```
PUT sig_terms_bug
{
  "mappings": {
    "properties": {
      "field1": {
        "type": "keyword"
      },
      "field2": {
        "type": "keyword"
      },
      "field3": {
        "type": "keyword"
      }
    }
  }
}

POST sig_terms_bug/_bulk?refresh=true
{ "index" : {} }
{ "field1" : "failed", "field2": "frontend-node", "field3": "foo" }
{ "index" : {} }
{ "field1" : "failed", "field2": "frontend-node", "field3": "bar" }
{ "index" : {} }
{ "field1" : "failed", "field2": "frontend-node", "field3": "bar" }
{ "index" : {} }
{ "field1" : "success", "field2": "frontend-node", "field3": "bar" }
{ "index" : {} }
{ "field1" : "success", "field2": "frontend-node", "field3": "bar" }
{ "index" : {} }
{ "field1" : "failed", "field2": "backend-node", "field3": "foo" }
{ "index" : {} }
{ "field1" : "failed", "field2": "backend-node", "field3": "bar" }
{ "index" : {} }
{ "field1" : "failed", "field2": "backend-node", "field3": "bar" }
{ "index" : {} }
{ "field1" : "success", "field2": "backend-node", "field3": "bar" }
{ "index" : {} }
{ "field1" : "success", "field2": "backend-node", "field3": "bar" }
{ "index" : {} }

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "sig_terms_bug",
        "alias": "sig_terms_bug_alias",
        "filter": {
          "bool": {
            "filter": [
              {
                "term": {
                  "field2": "frontend-node"
                }
              }
            ]
          }
        }
      }
    }
  ]
}

GET sig_terms_bug_alias/_search?track_total_hits=true&size=0&filter_path=aggregations
{
  "aggs": {
    "sig_term": {
      "significant_terms": {
        "field": "field3"
      }
    }
  }
}
```

This results in:
```
{
  "aggregations" : {
    "sig_term" : {
      "doc_count" : 5,
      "bg_count" : 10,
      "buckets" : [ ]
    }
  }
}
```

It seems to me that the `bg_count` should respect the alias filter.

server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/SignificantTermsAggregatorTests.java
private void testAllDocsWithoutStringField(String executionHint) throws IOException {
        try (Directory dir = newDirectory()) {
            try (RandomIndexWriter writer = new RandomIndexWriter(random(), dir)) {
                writer.addDocument(new Document());
                try (IndexReader reader = maybeWrapReaderEs(writer.getReader())) {
                    IndexSearcher searcher = newIndexSearcher(reader);
                    SignificantTermsAggregationBuilder request = new SignificantTermsAggregationBuilder("f").field("f")
                        .executionHint(executionHint);
                    SignificantStringTerms result = searchAndReduce(searcher, new MatchAllDocsQuery(), request, keywordField("f"));
                    assertThat(result.getSubsetSize(), equalTo(1L));
                }
            }
        }
    }
    /**
     * Make sure that when the field is mapped but there aren't any values
     * for it we return a properly shaped "empty" result. In particular, the
     * {@link InternalMappedSignificantTerms#getSubsetSize()} needs to be set
     * to the number of matching documents.
     */
    public void testAllDocsWithoutNumericField() throws IOException {
        try (Directory dir = newDirectory()) {
            try (RandomIndexWriter writer = new RandomIndexWriter(random(), dir)) {
                writer.addDocument(new Document());
                try (IndexReader reader = maybeWrapReaderEs(writer.getReader())) {
                    IndexSearcher searcher = newIndexSearcher(reader);
                    SignificantTermsAggregationBuilder request = new SignificantTermsAggregationBuilder("f").field("f");
                    SignificantLongTerms result = searchAndReduce(searcher, new MatchAllDocsQuery(), request, longField("f"));
                    assertThat(result.getSubsetSize(), equalTo(1L));
                }