WARNING: Version 5.x has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Significant Terms Aggregation Usageedit
An aggregation that returns interesting or unusual occurrences of terms in a set.
The significant_terms aggregation can be very heavy when run on large indices. Work is in progress to provide more lightweight sampling techniques. As a result, the API for this feature may change in non-backwards compatible ways
See the Elasticsearch documentation on significant terms aggregation for more detail.
Fluent DSL exampleedit
s => s .Aggregations(a => a .SignificantTerms("significant_names", st => st .Field(p => p.Name) .MinimumDocumentCountAsLong(10) .MutualInformation(mi => mi .BackgroundIsSuperSet() .IncludeNegatives() ) ) )
Object Initializer syntax exampleedit
new SearchRequest<Project> { Aggregations = new SignificantTermsAggregation("significant_names") { Field = Field<Project>(p => p.Name), MinimumDocumentCountAsLong = 10, MutualInformation = new MutualInformationHeuristic { BackgroundIsSuperSet = true, IncludeNegatives = true } } }
Example json output.
{ "aggs": { "significant_names": { "significant_terms": { "field": "name", "min_doc_count": 10, "mutual_information": { "background_is_superset": true, "include_negatives": true } } } } }
Handling Responsesedit
response.ShouldBeValid(); var sigNames = response.Aggs.SignificantTerms("significant_names"); sigNames.Should().NotBeNull(); sigNames.DocCount.Should().BeGreaterThan(0);
Filtering with a regular expression patternedit
Using significant terms aggregation with filtering to include values using a regular expression pattern
Fluent DSL exampleedit
s => s .Aggregations(a => a .SignificantTerms("significant_names", st => st .Field(p => p.Name) .MinimumDocumentCountAsLong(10) .MutualInformation(mi => mi .BackgroundIsSuperSet() .IncludeNegatives() ) .Include("pi*") ) )
Object Initializer syntax exampleedit
new SearchRequest<Project> { Aggregations = new SignificantTermsAggregation("significant_names") { Field = Field<Project>(p => p.Name), MinimumDocumentCountAsLong = 10, MutualInformation = new MutualInformationHeuristic { BackgroundIsSuperSet = true, IncludeNegatives = true }, IncludeTerms = new SignificantTermsIncludeExclude("pi*") } }
Example json output.
{ "aggs": { "significant_names": { "significant_terms": { "field": "name", "min_doc_count": 10, "mutual_information": { "background_is_superset": true, "include_negatives": true }, "include": "pi*" } } } }
Handling Responsesedit
response.ShouldBeValid(); var sigNames = response.Aggs.SignificantTerms("significant_names"); sigNames.Should().NotBeNull(); sigNames.DocCount.Should().BeGreaterThan(0);
Filtering with exact valuesedit
Using significant terms aggregation with filtering to exclude specific values
Fluent DSL exampleedit
s => s .Aggregations(a => a .SignificantTerms("significant_names", st => st .Field(p => p.Name) .MinimumDocumentCountAsLong(10) .MutualInformation(mi => mi .BackgroundIsSuperSet() .IncludeNegatives() ) .Exclude(new[] { "pierce" }) ) )
Object Initializer syntax exampleedit
new SearchRequest<Project> { Aggregations = new SignificantTermsAggregation("significant_names") { Field = Field<Project>(p => p.Name), MinimumDocumentCountAsLong = 10, MutualInformation = new MutualInformationHeuristic { BackgroundIsSuperSet = true, IncludeNegatives = true }, ExcludeTerms = new SignificantTermsIncludeExclude(new[] { "pierce" }) } }
Example json output.
{ "aggs": { "significant_names": { "significant_terms": { "field": "name", "min_doc_count": 10, "mutual_information": { "background_is_superset": true, "include_negatives": true }, "exclude": [ "pierce" ] } } } }
Handling Responsesedit
response.ShouldBeValid(); var sigNames = response.Aggs.SignificantTerms("significant_names"); sigNames.Should().NotBeNull(); sigNames.DocCount.Should().BeGreaterThan(0);