From ff4c8042d7c5bf55ab9cb2d332a1629e92cc5e03 Mon Sep 17 00:00:00 2001 From: JP Rosevear Date: Tue, 21 Mar 2017 10:57:59 -0400 Subject: [PATCH] Support cardinality metric aggregator (#876) --- lib/searchkick/query.rb | 6 ++++++ test/aggs_test.rb | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 0 deletions(-) diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index 5debdbb..c05ab30 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -643,6 +643,12 @@ module Searchkick interval: interval } } + elsif agg_options[:cardinality] + payload[:aggs][field] = { + cardinality: { + field: agg_options[:cardinality][:field] || field + } + } else payload[:aggs][field] = { terms: { diff --git a/test/aggs_test.rb b/test/aggs_test.rb index f1911de..7f51347 100644 --- a/test/aggs_test.rb +++ b/test/aggs_test.rb @@ -116,6 +116,20 @@ class AggsTest < Minitest::Test assert_equal 4, products.aggs["products_per_year"]["buckets"].size end + def test_aggs_cardinality + products = + Product.search("*", { + aggs: { + total_stores: { + cardinality: { + field: :store_id + } + } + } + }) + assert_equal 3, products.aggs["total_stores"]["value"] + end + protected def buckets_as_hash(agg) -- libgit2 0.21.0