|
@@ -19,10 +19,12 @@
|
|
|
|
|
|
package org.elasticsearch.fieldstats;
|
|
|
|
|
|
+import org.apache.lucene.util.BytesRef;
|
|
|
import org.elasticsearch.action.fieldstats.FieldStats;
|
|
|
import org.elasticsearch.action.fieldstats.FieldStatsResponse;
|
|
|
import org.elasticsearch.action.fieldstats.IndexConstraint;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
+import org.elasticsearch.index.mapper.core.DateFieldMapper;
|
|
|
import org.elasticsearch.test.ESSingleNodeTestCase;
|
|
|
import org.joda.time.DateTime;
|
|
|
import org.joda.time.DateTimeZone;
|
|
@@ -75,8 +77,10 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
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(String.format(Locale.ENGLISH, "%03d", 0)));
|
|
|
- assertThat(result.getAllFieldStats().get("field").getMaxValue(), equalTo(String.format(Locale.ENGLISH, "%03d", 10)));
|
|
|
+ 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)));
|
|
|
}
|
|
|
|
|
|
public void testDouble() {
|
|
@@ -91,8 +95,9 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
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(Double.toString(-1)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValue(), equalTo(Double.toString(9)));
|
|
|
+ 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)));
|
|
|
}
|
|
|
|
|
|
public void testFloat() {
|
|
@@ -107,8 +112,10 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
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(Float.toString(-1)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValue(), equalTo(Float.toString(9)));
|
|
|
+ assertThat(result.getAllFieldStats().get(fieldName).getMinValue(), equalTo(-1.0));
|
|
|
+ assertThat(result.getAllFieldStats().get(fieldName).getMaxValue(), equalTo(9.0));
|
|
|
+ assertThat(result.getAllFieldStats().get(fieldName).getMinValueAsString(), equalTo(Float.toString(-1)));
|
|
|
+ assertThat(result.getAllFieldStats().get(fieldName).getMaxValueAsString(), equalTo(Float.toString(9)));
|
|
|
}
|
|
|
|
|
|
private void testNumberRange(String fieldName, String fieldType, long min, long max) {
|
|
@@ -123,8 +130,10 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
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(java.lang.Long.toString(min)));
|
|
|
- assertThat(result.getAllFieldStats().get(fieldName).getMaxValue(), equalTo(java.lang.Long.toString(max)));
|
|
|
+ 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)));
|
|
|
client().admin().indices().prepareDelete("test").get();
|
|
|
}
|
|
|
|
|
@@ -193,15 +202,15 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
assertThat(result.getTotalShards(), equalTo(2));
|
|
|
assertThat(result.getSuccessfulShards(), equalTo(1));
|
|
|
assertThat(result.getShardFailures()[0].reason(), either(containsString("field [field1] doesn't exist")).or(containsString("field [field2] doesn't exist")));
|
|
|
- assertThat(result.getIndicesMergedFieldStats().get("_all").get("field1").getMinValue(), equalTo("a"));
|
|
|
- assertThat(result.getIndicesMergedFieldStats().get("_all").get("field1").getMaxValue(), equalTo("b"));
|
|
|
+ assertThat(result.getIndicesMergedFieldStats().get("_all").get("field1").getMinValueAsString(), equalTo("a"));
|
|
|
+ assertThat(result.getIndicesMergedFieldStats().get("_all").get("field1").getMaxValueAsString(), equalTo("b"));
|
|
|
}
|
|
|
|
|
|
public void testNumberFiltering() {
|
|
|
createIndex("test1", Settings.EMPTY, "type", "value", "type=long");
|
|
|
- client().prepareIndex("test1", "test").setSource("value", 1).get();
|
|
|
+ client().prepareIndex("test1", "test").setSource("value", 1l).get();
|
|
|
createIndex("test2", Settings.EMPTY, "type", "value", "type=long");
|
|
|
- client().prepareIndex("test2", "test").setSource("value", 3).get();
|
|
|
+ client().prepareIndex("test2", "test").setSource("value", 3l).get();
|
|
|
client().admin().indices().prepareRefresh().get();
|
|
|
|
|
|
FieldStatsResponse response = client().prepareFieldStats()
|
|
@@ -209,8 +218,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo("1"));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("3"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(1l));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(3l));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -232,7 +241,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo("1"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(1l));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -240,7 +249,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo("1"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(1l));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -255,7 +264,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("3"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(3l));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -263,7 +272,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("3"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(3l));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -278,8 +287,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo("1"));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("3"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(1l));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(3l));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -290,10 +299,15 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
}
|
|
|
|
|
|
public void testDateFiltering() {
|
|
|
+ DateTime dateTime1 = new DateTime(2014, 1, 1, 0, 0, 0, 0, DateTimeZone.UTC);
|
|
|
+ String dateTime1Str = DateFieldMapper.Defaults.DATE_TIME_FORMATTER.parser().print(dateTime1);
|
|
|
+ DateTime dateTime2 = new DateTime(2014, 1, 2, 0, 0, 0, 0, DateTimeZone.UTC);
|
|
|
+ String dateTime2Str = DateFieldMapper.Defaults.DATE_TIME_FORMATTER.parser().print(dateTime2);
|
|
|
+
|
|
|
createIndex("test1", Settings.EMPTY, "type", "value", "type=date");
|
|
|
- client().prepareIndex("test1", "test").setSource("value", "2014-01-01T00:00:00.000Z").get();
|
|
|
+ client().prepareIndex("test1", "test").setSource("value", dateTime1Str).get();
|
|
|
createIndex("test2", Settings.EMPTY, "type", "value", "type=date");
|
|
|
- client().prepareIndex("test2", "test").setSource("value", "2014-01-02T00:00:00.000Z").get();
|
|
|
+ client().prepareIndex("test2", "test").setSource("value", dateTime2Str).get();
|
|
|
client().admin().indices().prepareRefresh().get();
|
|
|
|
|
|
FieldStatsResponse response = client().prepareFieldStats()
|
|
@@ -301,8 +315,10 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo("2014-01-01T00:00:00.000Z"));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("2014-01-02T00:00:00.000Z"));
|
|
|
+ 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));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -317,7 +333,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo("2014-01-01T00:00:00.000Z"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo(dateTime1.getMillis()));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValueAsString(), equalTo(dateTime1Str));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -325,7 +342,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("2014-01-02T00:00:00.000Z"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(dateTime2.getMillis()));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(), equalTo(dateTime2Str));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -340,7 +358,8 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("2014-01-02T00:00:00.000Z"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo(dateTime2.getMillis()));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(), equalTo(dateTime2Str));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -348,8 +367,10 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo("2014-01-01T00:00:00.000Z"));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("2014-01-02T00:00:00.000Z"));
|
|
|
+ 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));
|
|
|
|
|
|
response = client().prepareFieldStats()
|
|
|
.setFields("value")
|
|
@@ -357,8 +378,10 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(2));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test1").get("value").getMinValue(), equalTo("2014-01-01T00:00:00.000Z"));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("2014-01-02T00:00:00.000Z"));
|
|
|
+ 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));
|
|
|
}
|
|
|
|
|
|
public void testDateFiltering_optionalFormat() {
|
|
@@ -376,7 +399,7 @@ public class FieldStatsTests extends ESSingleNodeTestCase {
|
|
|
.setLevel("indices")
|
|
|
.get();
|
|
|
assertThat(response.getIndicesMergedFieldStats().size(), equalTo(1));
|
|
|
- assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValue(), equalTo("2014-01-02T00:00:00.000Z"));
|
|
|
+ assertThat(response.getIndicesMergedFieldStats().get("test2").get("value").getMinValueAsString(), equalTo("2014-01-02T00:00:00.000Z"));
|
|
|
|
|
|
try {
|
|
|
client().prepareFieldStats()
|