diff --git a/elasticsearch_dsl/aggs.py b/elasticsearch_dsl/aggs.py index 11612fb3..962cfc35 100644 --- a/elasticsearch_dsl/aggs.py +++ b/elasticsearch_dsl/aggs.py @@ -278,6 +278,10 @@ class DiversifiedSampler(Bucket): name = "diversified_sampler" +class RandomSampler(Bucket): + name = "random_sampler" + + class Composite(Bucket): name = "composite" _param_defs = { diff --git a/tests/test_aggs.py b/tests/test_aggs.py index 16c2ad5f..e908cc00 100644 --- a/tests/test_aggs.py +++ b/tests/test_aggs.py @@ -383,3 +383,22 @@ def test_normalize_aggregation(): assert { "normalize": {"buckets_path": "normalized", "method": "percent_of_sum"} } == a.to_dict() + + +def test_random_sampler_aggregation(): + a = aggs.RandomSampler(probability=0.1).metric( + "price_percentiles", + "percentiles", + field="price", + ) + + assert { + "random_sampler": { + "probability": 0.1, + }, + "aggs": { + "price_percentiles": { + "percentiles": {"field": "price"}, + }, + }, + } == a.to_dict()