IMPORTANT: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
current release documentation.
Rare Terms Aggregation Usage
editRare Terms Aggregation Usage
editA multi-bucket value source based aggregation which finds "rare" terms — terms that are at the long-tail of the distribution and are not frequent. Conceptually, this is like a terms aggregation that is sorted by _count ascending. As noted in the terms aggregation docs, actually ordering a terms agg by count ascending has unbounded error. Instead, you should use the rare_terms aggregation.
Valid only in Elasticsearch 7.3.0+
See the Elasticsearch documentation on rare terms aggregation for more detail.
Fluent DSL example
edita => a .RareTerms("names", st => st .Field(p => p.Name) .Missing("n/a") .MaximumDocumentCount(5) .Precision(0.001) .Meta(m => m .Add("foo", "bar") ) )
Object Initializer syntax example
editnew RareTermsAggregation("names") { Field = Infer.Field<Project>(p => p.Name), MaximumDocumentCount = 5, Precision = 0.001, Missing = "n/a", Meta = new Dictionary<string, object> { { "foo", "bar" } } }
Example json output.
{ "names": { "meta": { "foo": "bar" }, "rare_terms": { "field": "name", "max_doc_count": 5, "missing": "n/a", "precision": 0.001 } } }
Handling Responses
editresponse.ShouldBeValid(); var rareTerms = response.Aggregations.RareTerms("names"); rareTerms.Should().NotBeNull(); rareTerms.Buckets.Should().NotBeNull(); rareTerms.Buckets.Count.Should().BeGreaterThan(0); foreach (var item in rareTerms.Buckets) { item.Key.Should().NotBeNullOrEmpty(); item.DocCount.Should().BeGreaterOrEqualTo(1); } rareTerms.Meta.Should().NotBeNull().And.HaveCount(1); rareTerms.Meta["foo"].Should().Be("bar");