|
|
@@ -81,6 +81,51 @@ public class RangeHistogramAggregatorTests extends AggregatorTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testFloats() throws Exception {
|
|
|
+ RangeType rangeType = RangeType.FLOAT;
|
|
|
+ try (Directory dir = newDirectory(); RandomIndexWriter w = new RandomIndexWriter(random(), dir)) {
|
|
|
+ for (RangeFieldMapper.Range range : new RangeFieldMapper.Range[] {
|
|
|
+ new RangeFieldMapper.Range(rangeType, 1.0f, 5.0f, true, true), // bucket 0 5
|
|
|
+ new RangeFieldMapper.Range(rangeType, -3.1f, 4.2f, true, true), // bucket -5, 0
|
|
|
+ new RangeFieldMapper.Range(rangeType, 4.2f, 13.3f, true, true), // bucket 0, 5, 10
|
|
|
+ new RangeFieldMapper.Range(rangeType, 22.5f, 29.3f, true, true), // bucket 20, 25
|
|
|
+ }) {
|
|
|
+ Document doc = new Document();
|
|
|
+ BytesRef encodedRange = rangeType.encodeRanges(Collections.singleton(range));
|
|
|
+ doc.add(new BinaryDocValuesField("field", encodedRange));
|
|
|
+ w.addDocument(doc);
|
|
|
+ }
|
|
|
+
|
|
|
+ HistogramAggregationBuilder aggBuilder = new HistogramAggregationBuilder("my_agg").field("field").interval(5);
|
|
|
+
|
|
|
+ try (IndexReader reader = w.getReader()) {
|
|
|
+ InternalHistogram histogram = searchAndReduce(reader, new AggTestConfig(aggBuilder, rangeField("field", rangeType)));
|
|
|
+ assertEquals(7, histogram.getBuckets().size());
|
|
|
+
|
|
|
+ assertEquals(-5d, histogram.getBuckets().get(0).getKey());
|
|
|
+ assertEquals(1, histogram.getBuckets().get(0).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(0d, histogram.getBuckets().get(1).getKey());
|
|
|
+ assertEquals(3, histogram.getBuckets().get(1).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(5d, histogram.getBuckets().get(2).getKey());
|
|
|
+ assertEquals(2, histogram.getBuckets().get(2).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(10d, histogram.getBuckets().get(3).getKey());
|
|
|
+ assertEquals(1, histogram.getBuckets().get(3).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(15d, histogram.getBuckets().get(4).getKey());
|
|
|
+ assertEquals(0, histogram.getBuckets().get(4).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(20d, histogram.getBuckets().get(5).getKey());
|
|
|
+ assertEquals(1, histogram.getBuckets().get(5).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(25d, histogram.getBuckets().get(6).getKey());
|
|
|
+ assertEquals(1, histogram.getBuckets().get(6).getDocCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void testLongs() throws Exception {
|
|
|
RangeType rangeType = RangeType.LONG;
|
|
|
try (Directory dir = newDirectory(); RandomIndexWriter w = new RandomIndexWriter(random(), dir)) {
|
|
|
@@ -126,6 +171,51 @@ public class RangeHistogramAggregatorTests extends AggregatorTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testInts() throws Exception {
|
|
|
+ RangeType rangeType = RangeType.INTEGER;
|
|
|
+ try (Directory dir = newDirectory(); RandomIndexWriter w = new RandomIndexWriter(random(), dir)) {
|
|
|
+ for (RangeFieldMapper.Range range : new RangeFieldMapper.Range[] {
|
|
|
+ new RangeFieldMapper.Range(rangeType, 1, 5, true, true), // bucket 0 5
|
|
|
+ new RangeFieldMapper.Range(rangeType, -3, 4, true, true), // bucket -5, 0
|
|
|
+ new RangeFieldMapper.Range(rangeType, 4, 13, true, true), // bucket 0, 5, 10
|
|
|
+ new RangeFieldMapper.Range(rangeType, 22, 29, true, true), // bucket 20, 25
|
|
|
+ }) {
|
|
|
+ Document doc = new Document();
|
|
|
+ BytesRef encodedRange = rangeType.encodeRanges(Collections.singleton(range));
|
|
|
+ doc.add(new BinaryDocValuesField("field", encodedRange));
|
|
|
+ w.addDocument(doc);
|
|
|
+ }
|
|
|
+
|
|
|
+ HistogramAggregationBuilder aggBuilder = new HistogramAggregationBuilder("my_agg").field("field").interval(5);
|
|
|
+
|
|
|
+ try (IndexReader reader = w.getReader()) {
|
|
|
+ InternalHistogram histogram = searchAndReduce(reader, new AggTestConfig(aggBuilder, rangeField("field", rangeType)));
|
|
|
+ assertEquals(7, histogram.getBuckets().size());
|
|
|
+
|
|
|
+ assertEquals(-5d, histogram.getBuckets().get(0).getKey());
|
|
|
+ assertEquals(1, histogram.getBuckets().get(0).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(0d, histogram.getBuckets().get(1).getKey());
|
|
|
+ assertEquals(3, histogram.getBuckets().get(1).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(5d, histogram.getBuckets().get(2).getKey());
|
|
|
+ assertEquals(2, histogram.getBuckets().get(2).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(10d, histogram.getBuckets().get(3).getKey());
|
|
|
+ assertEquals(1, histogram.getBuckets().get(3).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(15d, histogram.getBuckets().get(4).getKey());
|
|
|
+ assertEquals(0, histogram.getBuckets().get(4).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(20d, histogram.getBuckets().get(5).getKey());
|
|
|
+ assertEquals(1, histogram.getBuckets().get(5).getDocCount());
|
|
|
+
|
|
|
+ assertEquals(25d, histogram.getBuckets().get(6).getKey());
|
|
|
+ assertEquals(1, histogram.getBuckets().get(6).getDocCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void testMultipleRanges() throws Exception {
|
|
|
RangeType rangeType = RangeType.LONG;
|
|
|
try (Directory dir = newDirectory(); RandomIndexWriter w = new RandomIndexWriter(random(), dir)) {
|