summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/search/aggregations/metrics/CardinalityIT.java
diff options
context:
space:
mode:
authorRobert Muir <rmuir@apache.org>2015-09-28 20:17:45 -0400
committerRobert Muir <rmuir@apache.org>2015-09-28 20:17:45 -0400
commite0d42739dd756704605d57028564f5996c1bd619 (patch)
tree08ede115f457d85ad41ba05ed5ce86be9e773a24 /core/src/test/java/org/elasticsearch/search/aggregations/metrics/CardinalityIT.java
parent148265bd164cd5a614cd020fb480d5974f523d81 (diff)
Factor groovy out of core into lang-groovy
Diffstat (limited to 'core/src/test/java/org/elasticsearch/search/aggregations/metrics/CardinalityIT.java')
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/metrics/CardinalityIT.java408
1 files changed, 0 insertions, 408 deletions
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/CardinalityIT.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/CardinalityIT.java
deleted file mode 100644
index d77e4d1ccd..0000000000
--- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/CardinalityIT.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * Licensed to Elasticsearch under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.elasticsearch.search.aggregations.metrics;
-
-import org.elasticsearch.action.index.IndexRequestBuilder;
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.script.Script;
-import org.elasticsearch.search.aggregations.Aggregator.SubAggCollectionMode;
-import org.elasticsearch.search.aggregations.bucket.global.Global;
-import org.elasticsearch.search.aggregations.bucket.terms.Terms;
-import org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality;
-import org.elasticsearch.test.ESIntegTestCase;
-import org.junit.Test;
-
-import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
-import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;
-import static org.elasticsearch.search.aggregations.AggregationBuilders.cardinality;
-import static org.elasticsearch.search.aggregations.AggregationBuilders.global;
-import static org.elasticsearch.search.aggregations.AggregationBuilders.terms;
-import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.greaterThan;
-import static org.hamcrest.Matchers.notNullValue;
-
-@ESIntegTestCase.SuiteScopeTestCase
-public class CardinalityIT extends ESIntegTestCase {
-
- @Override
- public Settings indexSettings() {
- return Settings.builder()
- .put("index.number_of_shards", numberOfShards())
- .put("index.number_of_replicas", numberOfReplicas())
- .build();
- }
-
- static long numDocs;
- static long precisionThreshold;
-
- @Override
- public void setupSuiteScopeCluster() throws Exception {
-
- prepareCreate("idx").addMapping("type",
- jsonBuilder().startObject().startObject("type").startObject("properties")
- .startObject("str_value")
- .field("type", "string")
- .endObject()
- .startObject("str_values")
- .field("type", "string")
- .endObject()
- .startObject("l_value")
- .field("type", "long")
- .endObject()
- .startObject("l_values")
- .field("type", "long")
- .endObject()
- .startObject("d_value")
- .field("type", "double")
- .endObject()
- .startObject("d_values")
- .field("type", "double")
- .endObject()
- .endObject().endObject().endObject()).execute().actionGet();
-
- numDocs = randomIntBetween(2, 100);
- precisionThreshold = randomIntBetween(0, 1 << randomInt(20));
- IndexRequestBuilder[] builders = new IndexRequestBuilder[(int) numDocs];
- for (int i = 0; i < numDocs; ++i) {
- builders[i] = client().prepareIndex("idx", "type").setSource(jsonBuilder()
- .startObject()
- .field("str_value", "s" + i)
- .field("str_values", new String[]{"s" + (i * 2), "s" + (i * 2 + 1)})
- .field("l_value", i)
- .field("l_values", new int[] {i * 2, i * 2 + 1})
- .field("d_value", i)
- .field("d_values", new double[]{i * 2, i * 2 + 1})
- .endObject());
- }
- indexRandom(true, builders);
- createIndex("idx_unmapped");
-
- IndexRequestBuilder[] dummyDocsBuilder = new IndexRequestBuilder[10];
- for (int i = 0; i < dummyDocsBuilder.length; i++) {
- dummyDocsBuilder[i] = client().prepareIndex("idx", "type").setSource("a_field", "1");
- }
- indexRandom(true, dummyDocsBuilder);
-
- ensureSearchable();
- }
-
- private void assertCount(Cardinality count, long value) {
- if (value <= precisionThreshold) {
- // linear counting should be picked, and should be accurate
- assertEquals(value, count.getValue());
- } else {
- // error is not bound, so let's just make sure it is > 0
- assertThat(count.getValue(), greaterThan(0L));
- }
- }
- private String singleNumericField() {
- return randomBoolean() ? "l_value" : "d_value";
- }
-
- private String multiNumericField(boolean hash) {
- return randomBoolean() ? "l_values" : "d_values";
- }
-
- @Test
- public void unmapped() throws Exception {
- SearchResponse response = client().prepareSearch("idx_unmapped").setTypes("type")
- .addAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field("str_value"))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, 0);
- }
-
- @Test
- public void partiallyUnmapped() throws Exception {
- SearchResponse response = client().prepareSearch("idx", "idx_unmapped").setTypes("type")
- .addAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field("str_value"))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs);
- }
-
- @Test
- public void singleValuedString() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field("str_value"))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs);
- }
-
- @Test
- public void singleValuedNumeric() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field(singleNumericField()))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs);
- }
-
- @Test
- public void singleValuedNumeric_getProperty() throws Exception {
-
- SearchResponse searchResponse = client().prepareSearch("idx").setQuery(matchAllQuery())
- .addAggregation(
- global("global").subAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).field(singleNumericField())))
- .execute().actionGet();
-
- assertSearchResponse(searchResponse);
-
- Global global = searchResponse.getAggregations().get("global");
- assertThat(global, notNullValue());
- assertThat(global.getName(), equalTo("global"));
- // assertThat(global.getDocCount(), equalTo(numDocs));
- assertThat(global.getAggregations(), notNullValue());
- assertThat(global.getAggregations().asMap().size(), equalTo(1));
-
- Cardinality cardinality = global.getAggregations().get("cardinality");
- assertThat(cardinality, notNullValue());
- assertThat(cardinality.getName(), equalTo("cardinality"));
- long expectedValue = numDocs;
- assertCount(cardinality, expectedValue);
- assertThat((Cardinality) global.getProperty("cardinality"), equalTo(cardinality));
- assertThat((double) global.getProperty("cardinality.value"), equalTo((double) cardinality.getValue()));
- assertThat((double) cardinality.getProperty("value"), equalTo((double) cardinality.getValue()));
- }
-
- @Test
- public void singleValuedNumericHashed() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field(singleNumericField()))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs);
- }
-
- @Test
- public void multiValuedString() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field("str_values"))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs * 2);
- }
-
- @Test
- public void multiValuedNumeric() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field(multiNumericField(false)))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs * 2);
- }
-
- @Test
- public void multiValuedNumericHashed() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field(multiNumericField(true)))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs * 2);
- }
-
- @Test
- public void singleValuedStringScript() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).script(new Script("doc['str_value'].value")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs);
- }
-
- @Test
- public void multiValuedStringScript() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).script(new Script("doc['str_values'].values")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs * 2);
- }
-
- @Test
- public void singleValuedNumericScript() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).script(
- new Script("doc['" + singleNumericField() + "'].value")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs);
- }
-
- @Test
- public void multiValuedNumericScript() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).script(
- new Script("doc['" + multiNumericField(false) + "'].values")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs * 2);
- }
-
- @Test
- public void singleValuedStringValueScript() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).field("str_value").script(new Script("_value")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs);
- }
-
- @Test
- public void multiValuedStringValueScript() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).field("str_values").script(new Script("_value")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs * 2);
- }
-
- @Test
- public void singleValuedNumericValueScript() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).field(singleNumericField())
- .script(new Script("_value")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs);
- }
-
- @Test
- public void multiValuedNumericValueScript() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(
- cardinality("cardinality").precisionThreshold(precisionThreshold).field(multiNumericField(false))
- .script(new Script("_value")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Cardinality count = response.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, numDocs * 2);
- }
-
- @Test
- public void asSubAgg() throws Exception {
- SearchResponse response = client().prepareSearch("idx").setTypes("type")
- .addAggregation(terms("terms").field("str_value")
- .collectMode(randomFrom(SubAggCollectionMode.values()))
- .subAggregation(cardinality("cardinality").precisionThreshold(precisionThreshold).field("str_values")))
- .execute().actionGet();
-
- assertSearchResponse(response);
-
- Terms terms = response.getAggregations().get("terms");
- for (Terms.Bucket bucket : terms.getBuckets()) {
- Cardinality count = bucket.getAggregations().get("cardinality");
- assertThat(count, notNullValue());
- assertThat(count.getName(), equalTo("cardinality"));
- assertCount(count, 2);
- }
- }
-
-}