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 Usage
editSignificant Terms Aggregation Usage
editAn 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 example
edits => s .Aggregations(a => a .SignificantTerms("significant_names", st => st .Field(p => p.Name) .MinimumDocumentCountAsLong(10) .MutualInformation(mi => mi .BackgroundIsSuperSet() .IncludeNegatives() ) ) )
Object Initializer syntax example
editnew 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 Responses
editresponse.ShouldBeValid(); var sigNames = response.Aggs.SignificantTerms("significant_names"); sigNames.Should().NotBeNull(); sigNames.DocCount.Should().BeGreaterThan(0);
Filtering with a regular expression pattern
editUsing significant terms aggregation with filtering to include values using a regular expression pattern
Fluent DSL example
edits => 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 example
editnew 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 Responses
editresponse.ShouldBeValid(); var sigNames = response.Aggs.SignificantTerms("significant_names"); sigNames.Should().NotBeNull(); sigNames.DocCount.Should().BeGreaterThan(0);
Filtering with exact values
editUsing significant terms aggregation with filtering to exclude specific values
Fluent DSL example
edits => 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 example
editnew 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 Responses
editresponse.ShouldBeValid(); var sigNames = response.Aggs.SignificantTerms("significant_names"); sigNames.Should().NotBeNull(); sigNames.DocCount.Should().BeGreaterThan(0);