Filter Aggregation Usageedit

Defines a single bucket of all the documents in the current document set context that match a specified filter. Often this will be used to narrow down the current aggregation context to a specific set of documents.

Be sure to read the Elasticsearch documentation on Filter Aggregation

a => a
.Filter("bethels_projects", date => date
    .Filter(q => q.Term(p => p.LeadDeveloper.FirstName, FirstNameToFind))
    .Aggregations(childAggs => childAggs
        .Terms("project_tags", avg => avg.Field(p => p.CuratedTags.First().Name.Suffix("keyword")))
    )
)
new FilterAggregation("bethels_projects")
{
    Filter = new TermQuery {Field = Field<Project>(p => p.LeadDeveloper.FirstName), Value = FirstNameToFind},
    Aggregations =
        new TermsAggregation("project_tags") {Field = Field<Project>(p => p.CuratedTags.First().Name.Suffix("keyword"))}
}

Example json output. 

{
  "bethels_projects": {
    "filter": {
      "term": {
        "leadDeveloper.firstName": {
          "value": "pierce"
        }
      }
    },
    "aggs": {
      "project_tags": {
        "terms": {
          "field": "curatedTags.name.keyword"
        }
      }
    }
  }
}