**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
assertEquals("test expects a single segment", 1, reader.leaves().size());
                IndexSearcher searcher = new IndexSearcher(reader);
                SignificantTerms evenTerms = searchAndReduce(searcher, new TermQuery(new Term("text", "even")), agg, textFieldType);
                SignificantTerms aliasEvenTerms = searchAndReduce(
                    searcher,
                    new TermQuery(new Term("text", "even")),
                    aliasAgg,
                    textFieldType
                );
                assertFalse(evenTerms.getBuckets().isEmpty());
                assertEquals(evenTerms, aliasEvenTerms);
                SignificantTerms oddTerms = searchAndReduce(searcher, new TermQuery(new Term("text", "odd")), agg, textFieldType);
                SignificantTerms aliasOddTerms = searchAndReduce(searcher, new TermQuery(new Term("text", "odd")), aliasAgg, textFieldType);
                assertFalse(oddTerms.getBuckets().isEmpty());
                assertEquals(oddTerms, aliasOddTerms);
            }
        }
    }
    public void testAllDocsWithoutStringFieldviaGlobalOrds() throws IOException {
        testAllDocsWithoutStringField("global_ordinals");
    }
    public void testAllDocsWithoutStringFieldViaMap() throws IOException {
        testAllDocsWithoutStringField("map");
    }
    /**
     * 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.
     */