|
@@ -20,10 +20,12 @@
|
|
|
package org.elasticsearch.fieldstats;
|
|
|
|
|
|
import org.apache.lucene.util.BytesRef;
|
|
|
+import org.elasticsearch.Version;
|
|
|
import org.elasticsearch.action.fieldstats.FieldStats;
|
|
|
import org.elasticsearch.action.fieldstats.FieldStatsResponse;
|
|
|
import org.elasticsearch.action.fieldstats.IndexConstraint;
|
|
|
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
|
|
+import org.elasticsearch.common.io.stream.StreamInput;
|
|
|
import org.elasticsearch.common.joda.Joda;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.index.mapper.DateFieldMapper;
|
|
@@ -46,7 +48,6 @@ import static org.elasticsearch.action.fieldstats.IndexConstraint.Comparison.LTE
|
|
|
import static org.elasticsearch.action.fieldstats.IndexConstraint.Property.MAX;
|
|
|
import static org.elasticsearch.action.fieldstats.IndexConstraint.Property.MIN;
|
|
|
import static org.hamcrest.Matchers.containsString;
|
|
|
-import static org.hamcrest.Matchers.equalTo;
|
|
|
|
|
|
public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
public void testByte() {
|
|
@@ -73,83 +74,157 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
testNumberRange("field1", "long", -312321312312422L, -312321312312412L);
|
|
|
}
|
|
|
|
|
|
+ private static String makeType(String type, boolean indexed, boolean docValues, boolean stored) {
|
|
|
+ return new StringBuilder()
|
|
|
+ .append("type=").append(type)
|
|
|
+ .append(",index=").append(indexed)
|
|
|
+ .append(",doc_values=").append(docValues)
|
|
|
+ .append(",store=").append(stored).toString();
|
|
|
+ }
|
|
|
+
|
|
|
public void testString() {
|
|
|
- createIndex("test", Settings.EMPTY, "test", "field", "type=text");
|
|
|
+ createIndex("test", Settings.EMPTY, "test",
|
|
|
+ "field_index", makeType("keyword", true, false, false),
|
|
|
+ "field_dv", makeType("keyword", false, true, false),
|
|
|
+ "field_stored", makeType("keyword", false, true, true),
|
|
|
+ "field_source", makeType("keyword", false, false, false));
|
|
|
for (int value = 0; value <= 10; value++) {
|
|
|
- client().prepareIndex("test", "test").setSource("field",
|
|
|
- String.format(Locale.ENGLISH, "%03d", value)).get();
|
|
|
+ String keyword = String.format(Locale.ENGLISH, "%03d", value);
|
|
|
+ client().prepareIndex("test", "test")
|
|
|
+ .setSource("field_index", keyword,
|
|
|
+ "field_dv", keyword,
|
|
|
+ "field_stored", keyword,
|
|
|
+ "field_source", keyword).get();
|
|
|
}
|
|
|
client().admin().indices().prepareRefresh().get();
|
|
|
|
|
|
- FieldStatsResponse result = client().prepareFieldStats().setFields("field").get();
|
|
|
- assertThat(result.getAllFieldStats().get("field").getMaxDoc(), equalTo(11L));
|
|
|
- assertThat(result.getAllFieldStats().get("field").getDocCount(), equalTo(11L));
|
|
|
- assertThat(result.getAllFieldStats().get("field").getDensity(), equalTo(100));
|
|
|
- assertThat(result.getAllFieldStats().get("field").getMinValue(),
|
|
|
- equalTo(new BytesRef(String.format(Locale.ENGLISH, "%03d", 0))));
|
|
|
- assertThat(result.getAllFieldStats().get("field").getMaxValue(),
|
|
|
- equalTo(new BytesRef(String.format(Locale.ENGLISH, "%03d", 10))));
|
|
|
- assertThat(result.getAllFieldStats().get("field").getMinValueAsString(),
|
|
|
- equalTo(String.format(Locale.ENGLISH, "%03d", 0)));
|
|
|
- assertThat(result.getAllFieldStats().get("field").getMaxValueAsString(),
|
|
|
- equalTo(String.format(Locale.ENGLISH, "%03d", 10)));
|
|
|
- assertThat(result.getAllFieldStats().get("field").getDisplayType(),
|
|
|
- equalTo("string"));
|
|
|
+ FieldStatsResponse result = client().prepareFieldStats()
|
|
|
+ .setFields("field_index", "field_dv", "field_stored", "field_source").get();
|
|
|
+ assertEquals(result.getAllFieldStats().size(), 3);
|
|
|
+ for (String field : new String[] {"field_index", "field_dv", "field_stored"}) {
|
|
|
+ FieldStats stats = result.getAllFieldStats().get(field);
|
|
|
+ assertEquals(stats.getMaxDoc(), 11L);
|
|
|
+ assertEquals(stats.getDisplayType(),
|
|
|
+ "string");
|
|
|
+ if ("field_index".equals(field)) {
|
|
|
+ assertEquals(stats.getMinValue(),
|
|
|
+ new BytesRef(String.format(Locale.ENGLISH, "%03d", 0)));
|
|
|
+ assertEquals(stats.getMaxValue(),
|
|
|
+ new BytesRef(String.format(Locale.ENGLISH, "%03d", 10)));
|
|
|
+ assertEquals(stats.getMinValueAsString(),
|
|
|
+ String.format(Locale.ENGLISH, "%03d", 0));
|
|
|
+ assertEquals(stats.getMaxValueAsString(),
|
|
|
+ String.format(Locale.ENGLISH, "%03d", 10));
|
|
|
+ assertEquals(stats.getDocCount(), 11L);
|
|
|
+ assertEquals(stats.getDensity(), 100);
|
|
|
+ } else {
|
|
|
+ assertEquals(stats.getDocCount(), 0L);
|
|
|
+ assertNull(stats.getMinValue());
|
|
|
+ assertNull(stats.getMaxValue());
|
|
|
+ assertEquals(stats.getDensity(), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void testDouble() {
|
|
|
- String fieldName = "field";
|
|
|
- createIndex("test", Settings.EMPTY, "test", fieldName, "type=double");
|
|
|
+ createIndex("test", Settings.EMPTY, "test",
|
|
|
+ "field_index", makeType("double", true, false, false),
|
|
|
+ "field_dv", makeType("double", false, true, false),
|
|
|
+ "field_stored", makeType("double", false, true, true),
|
|
|
+ "field_source", makeType("double", false, false, false));
|
|
|
for (double value = -1; value <= 9; value++) {
|
|
|
- client().prepareIndex("test", "test").setSource(fieldName, value).get();
|
|
|
+ client().prepareIndex("test", "test")
|
|
|
+ .setSource("field_index", value, "field_dv", value, "field_stored", value, "field_source", value).get();
|
|
|
}
|
|
|
client().admin().indices().prepareRefresh().get();
|
|
|
-
|
|
|
- FieldStatsResponse result = client().prepareFieldStats().setFields(fieldName).get();
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxDoc(), equalTo(11L));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDocCount(), equalTo(11L));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDensity(), equalTo(100));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMinValue(), equalTo(-1d));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValue(), equalTo(9d));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMinValueAsString(), equalTo(Double.toString(-1)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDisplayType(), equalTo("float"));
|
|
|
+ FieldStatsResponse result = client().prepareFieldStats()
|
|
|
+ .setFields("field_index", "field_dv", "field_stored", "field_source").get();
|
|
|
+ for (String field : new String[] {"field_index", "field_dv", "field_stored"}) {
|
|
|
+ FieldStats stats = result.getAllFieldStats().get(field);
|
|
|
+ assertEquals(stats.getMaxDoc(), 11L);
|
|
|
+ assertEquals(stats.getDisplayType(), "float");
|
|
|
+ if ("field_index".equals(field)) {
|
|
|
+ assertEquals(stats.getDocCount(), 11L);
|
|
|
+ assertEquals(stats.getDensity(), 100);
|
|
|
+ assertEquals(stats.getMinValue(), -1d);
|
|
|
+ assertEquals(stats.getMaxValue(), 9d);
|
|
|
+ assertEquals(stats.getMinValueAsString(), Double.toString(-1));
|
|
|
+ } else {
|
|
|
+ assertEquals(stats.getDocCount(), 0L);
|
|
|
+ assertNull(stats.getMinValue());
|
|
|
+ assertNull(stats.getMaxValue());
|
|
|
+ assertEquals(stats.getDensity(), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void testHalfFloat() {
|
|
|
- String fieldName = "field";
|
|
|
- createIndex("test", Settings.EMPTY, "test", fieldName, "type=half_float");
|
|
|
+ createIndex("test", Settings.EMPTY, "test",
|
|
|
+ "field_index", makeType("half_float", true, false, false),
|
|
|
+ "field_dv", makeType("half_float", false, true, false),
|
|
|
+ "field_stored", makeType("half_float", false, true, true),
|
|
|
+ "field_source", makeType("half_float", false, false, false));
|
|
|
for (float value = -1; value <= 9; value++) {
|
|
|
- client().prepareIndex("test", "test").setSource(fieldName, value).get();
|
|
|
+ client().prepareIndex("test", "test")
|
|
|
+ .setSource("field_index", value, "field_dv", value, "field_stored", value, "field_source", value).get();
|
|
|
}
|
|
|
client().admin().indices().prepareRefresh().get();
|
|
|
|
|
|
- FieldStatsResponse result = client().prepareFieldStats().setFields(fieldName).get();
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxDoc(), equalTo(11L));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDocCount(), equalTo(11L));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDensity(), equalTo(100));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMinValue(), equalTo(-1d));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValue(), equalTo(9d));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMinValueAsString(), equalTo(Float.toString(-1)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValueAsString(), equalTo(Float.toString(9)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDisplayType(), equalTo("float"));
|
|
|
+ FieldStatsResponse result = client().prepareFieldStats()
|
|
|
+ .setFields("field_index", "field_dv", "field_stored", "field_source").get();
|
|
|
+ for (String field : new String[] {"field_index", "field_dv", "field_stored"}) {
|
|
|
+ FieldStats stats = result.getAllFieldStats().get(field);
|
|
|
+ assertEquals(stats.getMaxDoc(), 11L);
|
|
|
+ assertEquals(stats.getDisplayType(), "float");
|
|
|
+ if (field.equals("field_index")) {
|
|
|
+ assertEquals(stats.getDocCount(), 11L);
|
|
|
+ assertEquals(stats.getDensity(), 100);
|
|
|
+ assertEquals(stats.getMinValue(), -1d);
|
|
|
+ assertEquals(stats.getMaxValue(), 9d);
|
|
|
+ assertEquals(stats.getMinValueAsString(), Float.toString(-1));
|
|
|
+ assertEquals(stats.getMaxValueAsString(), Float.toString(9));
|
|
|
+ } else {
|
|
|
+ assertEquals(stats.getDocCount(), 0L);
|
|
|
+ assertNull(stats.getMinValue());
|
|
|
+ assertNull(stats.getMaxValue());
|
|
|
+ assertEquals(stats.getDensity(), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void testFloat() {
|
|
|
String fieldName = "field";
|
|
|
- createIndex("test", Settings.EMPTY, "test", fieldName, "type=float");
|
|
|
+ createIndex("test", Settings.EMPTY, "test",
|
|
|
+ "field_index", makeType("float", true, false, false),
|
|
|
+ "field_dv", makeType("float", false, true, false),
|
|
|
+ "field_stored", makeType("float", false, true, true),
|
|
|
+ "field_source", makeType("float", false, false, false));
|
|
|
for (float value = -1; value <= 9; value++) {
|
|
|
- client().prepareIndex("test", "test").setSource(fieldName, value).get();
|
|
|
+ client().prepareIndex("test", "test")
|
|
|
+ .setSource("field_index", value, "field_dv", value, "field_stored", value, "field_source", value).get();
|
|
|
}
|
|
|
client().admin().indices().prepareRefresh().get();
|
|
|
|
|
|
- FieldStatsResponse result = client().prepareFieldStats().setFields(fieldName).get();
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxDoc(), equalTo(11L));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDocCount(), equalTo(11L));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDensity(), equalTo(100));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMinValue(), equalTo(-1d));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValue(), equalTo(9d));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMinValueAsString(), equalTo(Float.toString(-1)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValueAsString(), equalTo(Float.toString(9)));
|
|
|
+ FieldStatsResponse result = client().prepareFieldStats()
|
|
|
+ .setFields("field_index", "field_dv", "field_stored", "field_source").get();
|
|
|
+ for (String field : new String[]{"field_index", "field_dv", "field_stored"}) {
|
|
|
+ FieldStats stats = result.getAllFieldStats().get(field);
|
|
|
+ assertEquals(stats.getMaxDoc(), 11L);
|
|
|
+ assertEquals(stats.getDisplayType(), "float");
|
|
|
+ if (field.equals("field_index")) {
|
|
|
+ assertEquals(stats.getDocCount(), 11L);
|
|
|
+ assertEquals(stats.getDensity(), 100);
|
|
|
+ assertEquals(stats.getMinValue(), -1d);
|
|
|
+ assertEquals(stats.getMaxValue(), 9d);
|
|
|
+ assertEquals(stats.getMinValueAsString(), Float.toString(-1));
|
|
|
+ assertEquals(stats.getMaxValueAsString(), Float.toString(9));
|
|
|
+ } else {
|
|
|
+ assertEquals(stats.getDocCount(), 0L);
|
|
|
+ assertNull(stats.getMinValue());
|
|
|
+ assertNull(stats.getMaxValue());
|
|
|
+ assertEquals(stats.getDensity(), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void testNumberRange(String fieldName, String fieldType, long min, long max) {
|
|
@@ -166,21 +241,21 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
|
|
|
FieldStatsResponse result = client().prepareFieldStats().setFields(fieldName).get();
|
|
|
long numDocs = max - min + 1;
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxDoc(), equalTo(numDocs));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDocCount(), equalTo(numDocs));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDensity(), equalTo(100));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMinValue(), equalTo(min));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValue(), equalTo(max));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMinValueAsString(),
|
|
|
- equalTo(java.lang.Long.toString(min)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValueAsString(),
|
|
|
- equalTo(java.lang.Long.toString(max)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).isSearchable(), equalTo(true));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).isAggregatable(), equalTo(true));
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getMaxDoc(), numDocs);
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getDocCount(), numDocs);
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getDensity(), 100);
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getMinValue(), min);
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getMaxValue(), max);
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getMinValueAsString(),
|
|
|
+ java.lang.Long.toString(min));
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getMaxValueAsString(),
|
|
|
+ java.lang.Long.toString(max));
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).isSearchable(), true);
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).isAggregatable(), true);
|
|
|
if (fieldType.equals("float") || fieldType.equals("double") || fieldType.equals("half-float")) {
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDisplayType(), equalTo("float"));
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getDisplayType(), "float");
|
|
|
} else {
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getDisplayType(), equalTo("integer"));
|
|
|
+ assertEquals(result.getAllFieldStats().get(fieldName).getDisplayType(), "integer");
|
|
|
}
|
|
|
|
|
|
client().admin().indices().prepareDelete("test").get();
|
|
@@ -193,18 +268,19 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
stats.add(new FieldStats.Long(1, 1L, 1L, 1L, true, false, 1L, 1L));
|
|
|
stats.add(new FieldStats.Long(1, 1L, 1L, 1L, true, false, 1L, 1L));
|
|
|
stats.add(new FieldStats.Long(1, 1L, 1L, 1L, true, false, 1L, 1L));
|
|
|
+ stats.add(new FieldStats.Long(0, 0, 0, 0, false, false));
|
|
|
|
|
|
FieldStats stat = new FieldStats.Long(1, 1L, 1L, 1L, true, false, 1L, 1L);
|
|
|
for (FieldStats otherStat : stats) {
|
|
|
stat.accumulate(otherStat);
|
|
|
}
|
|
|
- assertThat(stat.getMaxDoc(), equalTo(4L));
|
|
|
- assertThat(stat.getDocCount(), equalTo(4L));
|
|
|
- assertThat(stat.getSumDocFreq(), equalTo(4L));
|
|
|
- assertThat(stat.getSumTotalTermFreq(), equalTo(4L));
|
|
|
- assertThat(stat.isSearchable(), equalTo(true));
|
|
|
- assertThat(stat.isAggregatable(), equalTo(false));
|
|
|
- assertThat(stat.getDisplayType(), equalTo("integer"));
|
|
|
+ assertEquals(stat.getMaxDoc(), 4L);
|
|
|
+ assertEquals(stat.getDocCount(), 4L);
|
|
|
+ assertEquals(stat.getSumDocFreq(), 4L);
|
|
|
+ assertEquals(stat.getSumTotalTermFreq(), 4L);
|
|
|
+ assertEquals(stat.isSearchable(), true);
|
|
|
+ assertEquals(stat.isAggregatable(), false);
|
|
|
+ assertEquals(stat.getDisplayType(), "integer");
|
|
|
}
|
|
|
|
|
|
public void testMerge_notAvailable() {
|
|
@@ -217,26 +293,28 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
for (FieldStats otherStat : stats) {
|
|
|
stat.accumulate(otherStat);
|
|
|
}
|
|
|
- assertThat(stat.getMaxDoc(), equalTo(4L));
|
|
|
- assertThat(stat.getDocCount(), equalTo(-1L));
|
|
|
- assertThat(stat.getSumDocFreq(), equalTo(-1L));
|
|
|
- assertThat(stat.getSumTotalTermFreq(), equalTo(-1L));
|
|
|
- assertThat(stat.isSearchable(), equalTo(true));
|
|
|
- assertThat(stat.isAggregatable(), equalTo(true));
|
|
|
- assertThat(stat.getDisplayType(), equalTo("integer"));
|
|
|
-
|
|
|
- stats.add(new FieldStats.Long(1, -1L, -1L, -1L, true, true, 1L, 1L));
|
|
|
+ assertEquals(stat.getMaxDoc(), 4L);
|
|
|
+ assertEquals(stat.getDocCount(), -1L);
|
|
|
+ assertEquals(stat.getSumDocFreq(), -1L);
|
|
|
+ assertEquals(stat.getSumTotalTermFreq(), -1L);
|
|
|
+ assertEquals(stat.isSearchable(), true);
|
|
|
+ assertEquals(stat.isAggregatable(), true);
|
|
|
+ assertEquals(stat.getDisplayType(), "integer");
|
|
|
+
|
|
|
+ stats.add(new FieldStats.Long(1, -1L, -1L, -1L, false, true));
|
|
|
stat = stats.remove(0);
|
|
|
for (FieldStats otherStat : stats) {
|
|
|
stat.accumulate(otherStat);
|
|
|
}
|
|
|
- assertThat(stat.getMaxDoc(), equalTo(4L));
|
|
|
- assertThat(stat.getDocCount(), equalTo(-1L));
|
|
|
- assertThat(stat.getSumDocFreq(), equalTo(-1L));
|
|
|
- assertThat(stat.getSumTotalTermFreq(), equalTo(-1L));
|
|
|
- assertThat(stat.isSearchable(), equalTo(true));
|
|
|
- assertThat(stat.isAggregatable(), equalTo(true));
|
|
|
- assertThat(stat.getDisplayType(), equalTo("integer"));
|
|
|
+ assertEquals(stat.getMaxDoc(), 4L);
|
|
|
+ assertEquals(stat.getDocCount(), -1L);
|
|
|
+ assertEquals(stat.getSumDocFreq(), -1L);
|
|
|
+ assertEquals(stat.getSumTotalTermFreq(), -1L);
|
|
|
+ assertEquals(stat.isSearchable(), true);
|
|
|
+ assertEquals(stat.isAggregatable(), true);
|
|
|
+ assertEquals(stat.getDisplayType(), "integer");
|
|
|
+ assertNull(stat.getMaxValue());
|
|
|
+ assertNull(stat.getMinValue());
|
|
|
}
|
|
|
|
|
|
public void testNumberFiltering() {
|
|
@@ -250,9 +328,9 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setFields("value")
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(1L));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(3L));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 2);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), 1L);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), 3L);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -260,7 +338,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "0"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(0));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 0);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -268,7 +346,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LT, "1"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(0));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 0);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -276,8 +354,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "1"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(1L));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), 1L);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -285,8 +363,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "2"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(1L));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), 1L);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -294,7 +372,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "2"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(0));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 0);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -302,8 +380,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "3"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(3L));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), 3L);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -311,8 +389,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "4"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(3L));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), 3L);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -320,7 +398,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "4"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(0));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 0);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -328,9 +406,9 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "3"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(1L));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(3L));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 2);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), 1L);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), 3L);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -338,7 +416,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LT, "3"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(0));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 0);
|
|
|
}
|
|
|
|
|
|
public void testDateFiltering() {
|
|
@@ -347,8 +425,9 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
DateTime dateTime2 = new DateTime(2014, 1, 2, 0, 0, 0, 0, DateTimeZone.UTC);
|
|
|
String dateTime2Str = DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.parser().print(dateTime2);
|
|
|
|
|
|
- createIndex("test1", Settings.EMPTY, "type", "value", "type=date");
|
|
|
- client().prepareIndex("test1", "test").setSource("value", dateTime1Str).get();
|
|
|
+ createIndex("test1", Settings.EMPTY, "type", "value", "type=date", "value2", "type=date,index=false");
|
|
|
+ client().prepareIndex("test1", "test")
|
|
|
+ .setSource("value", dateTime1Str, "value2", dateTime1Str).get();
|
|
|
createIndex("test2", Settings.EMPTY, "type", "value", "type=date");
|
|
|
client().prepareIndex("test2", "test").setSource("value", dateTime2Str).get();
|
|
|
client().admin().indices().prepareRefresh().get();
|
|
@@ -357,17 +436,17 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setFields("value")
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(),
|
|
|
- equalTo(dateTime1.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
- equalTo(dateTime2.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime1Str));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime2Str));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
- equalTo("date"));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 2);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(),
|
|
|
+ dateTime1.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
+ dateTime2.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(),
|
|
|
+ dateTime1Str);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
+ dateTime2Str);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
+ "date");
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -375,7 +454,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "2013-12-31T00:00:00.000Z"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(0));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 0);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -383,13 +462,13 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "2014-01-01T00:00:00.000Z"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(),
|
|
|
- equalTo(dateTime1.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime1Str));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getDisplayType(),
|
|
|
- equalTo("date"));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(),
|
|
|
+ dateTime1.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(),
|
|
|
+ dateTime1Str);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getDisplayType(),
|
|
|
+ "date");
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -397,11 +476,11 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "2014-01-02T00:00:00.000Z"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
- equalTo(dateTime2.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime2Str));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
+ dateTime2.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
+ dateTime2Str);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -409,7 +488,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "2014-01-03T00:00:00.000Z"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(0));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 0);
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -417,47 +496,53 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, "2014-01-02T01:00:00.000Z"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
- equalTo(dateTime2.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime2Str));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
- equalTo("date"));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
+ dateTime2.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
+ dateTime2Str);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
+ "date");
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
|
.setIndexContraints(new IndexConstraint("value", MIN, GTE, "2014-01-01T00:00:00.000Z"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(),
|
|
|
- equalTo(dateTime1.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
- equalTo(dateTime2.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime1Str));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime2Str));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
- equalTo("date"));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 2);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(),
|
|
|
+ dateTime1.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
+ dateTime2.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(),
|
|
|
+ dateTime1Str);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
+ dateTime2Str);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
+ "date");
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
|
.setIndexContraints(new IndexConstraint("value", MAX, LTE, "2014-01-02T00:00:00.000Z"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(),
|
|
|
- equalTo(dateTime1.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
- equalTo(dateTime2.getMillis()));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime1Str));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
- equalTo(dateTime2Str));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
- equalTo("date"));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 2);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(),
|
|
|
+ dateTime1.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(),
|
|
|
+ dateTime2.getMillis());
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(),
|
|
|
+ dateTime1Str);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
+ dateTime2Str);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(), "date");
|
|
|
+
|
|
|
+ response = client().prepareFieldStats()
|
|
|
+ .setFields("value2")
|
|
|
+ .setIndexContraints(new IndexConstraint("value2", MAX, LTE, "2014-01-02T00:00:00.000Z"))
|
|
|
+ .setLevel("indices")
|
|
|
+ .get();
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 0);
|
|
|
}
|
|
|
|
|
|
public void testDateFiltering_optionalFormat() {
|
|
@@ -476,11 +561,11 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
new IndexConstraint("value", MAX, LTE, String.valueOf(dateTime2.getMillis()), "epoch_millis"))
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
- equalTo("2014-01-02T00:00:00.000Z"));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
- equalTo("date"));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(),
|
|
|
+ "2014-01-02T00:00:00.000Z");
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test2").get("value").getDisplayType(),
|
|
|
+ "date");
|
|
|
|
|
|
try {
|
|
|
client().prepareFieldStats()
|
|
@@ -501,8 +586,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setFields("*")
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
- assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").size(), equalTo(0));
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getIndicesMergedFieldStats().get("test1").size(), 0);
|
|
|
}
|
|
|
|
|
|
public void testMetaFieldsNotIndexed() {
|
|
@@ -513,56 +598,91 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
FieldStatsResponse response = client().prepareFieldStats()
|
|
|
.setFields("_id", "_type")
|
|
|
.get();
|
|
|
- assertThat(response.getAllFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getAllFieldStats().get("_type").isSearchable(), equalTo(true));
|
|
|
- assertThat(response.getAllFieldStats().get("_type").isAggregatable(), equalTo(true));
|
|
|
+ assertEquals(response.getAllFieldStats().size(), 1);
|
|
|
+ assertEquals(response.getAllFieldStats().get("_type").isSearchable(), true);
|
|
|
+ assertEquals(response.getAllFieldStats().get("_type").isAggregatable(), true);
|
|
|
}
|
|
|
|
|
|
public void testSerialization() throws IOException {
|
|
|
- for (int i = 0; i < 20; i++) {
|
|
|
- assertSerialization(randomFieldStats());
|
|
|
+ for (Version version : new Version[] {Version.CURRENT, Version.V_5_0_1}){
|
|
|
+ for (int i = 0; i < 20; i++) {
|
|
|
+ assertSerialization(randomFieldStats(version.onOrAfter(Version.V_5_2_0_UNRELEASED)), version);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* creates a random field stats which does not guarantee that {@link FieldStats#maxValue} is greater than {@link FieldStats#minValue}
|
|
|
**/
|
|
|
- private FieldStats randomFieldStats() throws UnknownHostException {
|
|
|
+ private FieldStats randomFieldStats(boolean withNullMinMax) throws UnknownHostException {
|
|
|
int type = randomInt(5);
|
|
|
switch (type) {
|
|
|
case 0:
|
|
|
- return new FieldStats.Long(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
- randomPositiveLong(), randomBoolean(), randomBoolean(), randomLong(), randomLong());
|
|
|
+ if (withNullMinMax && randomBoolean()) {
|
|
|
+ return new FieldStats.Long(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean());
|
|
|
+ } else {
|
|
|
+ return new FieldStats.Long(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean(), randomLong(), randomLong());
|
|
|
+ }
|
|
|
case 1:
|
|
|
- return new FieldStats.Double(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
- randomPositiveLong(), randomBoolean(), randomBoolean(), randomDouble(), randomDouble());
|
|
|
+ if (withNullMinMax && randomBoolean()) {
|
|
|
+ return new FieldStats.Double(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean());
|
|
|
+ } else {
|
|
|
+ return new FieldStats.Double(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean(), randomDouble(), randomDouble());
|
|
|
+ }
|
|
|
case 2:
|
|
|
- return new FieldStats.Date(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
- randomPositiveLong(), randomBoolean(), randomBoolean(), Joda.forPattern("basicDate"),
|
|
|
- new Date().getTime(), new Date().getTime());
|
|
|
+ if (withNullMinMax && randomBoolean()) {
|
|
|
+ return new FieldStats.Date(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean());
|
|
|
+ } else {
|
|
|
+ return new FieldStats.Date(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean(), Joda.forPattern("basicDate"),
|
|
|
+ new Date().getTime(), new Date().getTime());
|
|
|
+ }
|
|
|
case 3:
|
|
|
- return new FieldStats.Text(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
- randomPositiveLong(), randomBoolean(), randomBoolean(),
|
|
|
- new BytesRef(randomAsciiOfLength(10)), new BytesRef(randomAsciiOfLength(20)));
|
|
|
+ if (withNullMinMax && randomBoolean()) {
|
|
|
+ return new FieldStats.Text(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean());
|
|
|
+ } else {
|
|
|
+ return new FieldStats.Text(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean(),
|
|
|
+ new BytesRef(randomAsciiOfLength(10)), new BytesRef(randomAsciiOfLength(20)));
|
|
|
+ }
|
|
|
case 4:
|
|
|
- return new FieldStats.Ip(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
- randomPositiveLong(), randomBoolean(), randomBoolean(),
|
|
|
- InetAddress.getByName("::1"), InetAddress.getByName("::1"));
|
|
|
+ if (withNullMinMax && randomBoolean()) {
|
|
|
+ return new FieldStats.Ip(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean());
|
|
|
+ } else {
|
|
|
+ return new FieldStats.Ip(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean(),
|
|
|
+ InetAddress.getByName("::1"), InetAddress.getByName("::1"));
|
|
|
+ }
|
|
|
case 5:
|
|
|
- return new FieldStats.Ip(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
- randomPositiveLong(), randomBoolean(), randomBoolean(),
|
|
|
- InetAddress.getByName("1.2.3.4"), InetAddress.getByName("1.2.3.4"));
|
|
|
+ if (withNullMinMax && randomBoolean()) {
|
|
|
+ return new FieldStats.Ip(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean());
|
|
|
+ } else {
|
|
|
+ return new FieldStats.Ip(randomPositiveLong(), randomPositiveLong(), randomPositiveLong(),
|
|
|
+ randomPositiveLong(), randomBoolean(), randomBoolean(),
|
|
|
+ InetAddress.getByName("1.2.3.4"), InetAddress.getByName("1.2.3.4"));
|
|
|
+ }
|
|
|
default:
|
|
|
throw new IllegalArgumentException("Invalid type");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void assertSerialization(FieldStats stats) throws IOException {
|
|
|
+ private void assertSerialization(FieldStats stats, Version version) throws IOException {
|
|
|
BytesStreamOutput output = new BytesStreamOutput();
|
|
|
+ output.setVersion(version);
|
|
|
stats.writeTo(output);
|
|
|
output.flush();
|
|
|
- FieldStats deserializedStats = FieldStats.readFrom(output.bytes().streamInput());
|
|
|
- assertThat(stats, equalTo(deserializedStats));
|
|
|
- assertThat(stats.hashCode(), equalTo(deserializedStats.hashCode()));
|
|
|
+ StreamInput input = output.bytes().streamInput();
|
|
|
+ input.setVersion(version);
|
|
|
+ FieldStats deserializedStats = FieldStats.readFrom(input);
|
|
|
+ assertEquals(stats, deserializedStats);
|
|
|
+ assertEquals(stats.hashCode(), deserializedStats.hashCode());
|
|
|
}
|
|
|
}
|