diff options
author | Nik Everett <nik9000@gmail.com> | 2017-02-17 16:16:04 -0500 |
---|---|---|
committer | Nik Everett <nik9000@gmail.com> | 2017-02-17 16:16:04 -0500 |
commit | d9c37ce19591abc2e0c0a776f98b13a0c88ff0e9 (patch) | |
tree | 1929498667d1c3682f17ac3bd8feae2870c57ede /core/src/test/java/org/elasticsearch/search/aggregations/bucket | |
parent | d1de9574ea8882ea4bdb2fbbec096ecf16765344 (diff) |
Adds unit test for sampler aggregation
Relates to #22278
Diffstat (limited to 'core/src/test/java/org/elasticsearch/search/aggregations/bucket')
-rw-r--r-- | core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregatorTests.java | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregatorTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregatorTests.java new file mode 100644 index 0000000000..5db4caaf65 --- /dev/null +++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregatorTests.java @@ -0,0 +1,79 @@ +/* + * 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.bucket.sampler; + +import org.apache.lucene.analysis.standard.StandardAnalyzer; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field; +import org.apache.lucene.document.SortedNumericDocValuesField; +import org.apache.lucene.index.IndexReader; +import org.apache.lucene.index.RandomIndexWriter; +import org.apache.lucene.index.Term; +import org.apache.lucene.search.IndexSearcher; +import org.apache.lucene.search.TermQuery; +import org.apache.lucene.store.Directory; +import org.elasticsearch.index.analysis.AnalyzerScope; +import org.elasticsearch.index.analysis.NamedAnalyzer; +import org.elasticsearch.index.mapper.MappedFieldType; +import org.elasticsearch.index.mapper.NumberFieldMapper; +import org.elasticsearch.index.mapper.TextFieldMapper.TextFieldType; +import org.elasticsearch.search.aggregations.AggregatorTestCase; +import org.elasticsearch.search.aggregations.metrics.min.Min; +import org.elasticsearch.search.aggregations.metrics.min.MinAggregationBuilder; + +import java.io.IOException; + +public class SamplerAggregatorTests extends AggregatorTestCase { + /** + * Uses the sampler aggregation to find the minimum value of a field out of the top 3 scoring documents in a search. + */ + public void testSampler() throws IOException { + TextFieldType textFieldType = new TextFieldType(); + textFieldType.setIndexAnalyzer(new NamedAnalyzer("foo", AnalyzerScope.GLOBAL, new StandardAnalyzer())); + MappedFieldType numericFieldType = new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.LONG); + numericFieldType.setName("int"); + + try (Directory dir = newDirectory(); + RandomIndexWriter w = new RandomIndexWriter(random(), dir)) { + for (long value : new long[] {7, 3, -10, -6, 5, 50}) { + Document doc = new Document(); + StringBuilder text = new StringBuilder(); + for (int i = 0; i < value; i++) { + text.append("good "); + } + doc.add(new Field("text", text.toString(), textFieldType)); + doc.add(new SortedNumericDocValuesField("int", value)); + w.addDocument(doc); + } + + SamplerAggregationBuilder aggBuilder = new SamplerAggregationBuilder("sampler") + .shardSize(3) + .subAggregation(new MinAggregationBuilder("min") + .field("int")); + try (IndexReader reader = w.getReader()) { + IndexSearcher searcher = new IndexSearcher(reader); + Sampler sampler = searchAndReduce(searcher, new TermQuery(new Term("text", "good")), aggBuilder, textFieldType, + numericFieldType); + Min min = sampler.getAggregations().get("min"); + assertEquals(5.0, min.getValue(), Double.MIN_NORMAL); + } + } + } +} |