|
@@ -43,7 +43,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.addAggregatableField("some_float", "float").build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<ExtractedField> allFields = extractedFields.getAllFields();
|
|
@@ -58,7 +58,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<ExtractedField> allFields = extractedFields.getAllFields();
|
|
@@ -72,7 +72,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.addAggregatableField("some_keyword", "keyword").build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> extractedFieldsDetector.detect());
|
|
|
|
|
|
assertThat(e.getMessage(), equalTo("No compatible fields could be detected in index [source_index]"));
|
|
@@ -83,7 +83,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.addAggregatableField("indecisive_field", "float", "keyword").build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> extractedFieldsDetector.detect());
|
|
|
|
|
|
assertThat(e.getMessage(), equalTo("No compatible fields could be detected in index [source_index]"));
|
|
@@ -97,7 +97,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<ExtractedField> allFields = extractedFields.getAllFields();
|
|
@@ -117,7 +117,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildRegressionConfig("foo"), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildRegressionConfig("foo"), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<ExtractedField> allFields = extractedFields.getAllFields();
|
|
@@ -136,7 +136,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildRegressionConfig("foo"), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildRegressionConfig("foo"), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> extractedFieldsDetector.detect());
|
|
|
|
|
|
assertThat(e.getMessage(), equalTo("required fields [foo] are missing"));
|
|
@@ -147,7 +147,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.addAggregatableField("_id", "float").build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> extractedFieldsDetector.detect());
|
|
|
|
|
|
assertThat(e.getMessage(), equalTo("No compatible fields could be detected in index [source_index]"));
|
|
@@ -169,7 +169,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
FieldCapabilitiesResponse fieldCapabilities = mockFieldCapsResponseBuilder.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<String> extractedFieldNames = extractedFields.getAllFields().stream().map(ExtractedField::getName)
|
|
@@ -186,7 +186,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
FetchSourceContext desiredFields = new FetchSourceContext(true, new String[]{"your_field1", "my*"}, new String[0]);
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(desiredFields), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(desiredFields), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> extractedFieldsDetector.detect());
|
|
|
|
|
|
assertThat(e.getMessage(), equalTo("No field [your_field1] could be detected"));
|
|
@@ -201,7 +201,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
FetchSourceContext desiredFields = new FetchSourceContext(true, new String[0], new String[]{"my_*"});
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(desiredFields), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(desiredFields), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> extractedFieldsDetector.detect());
|
|
|
assertThat(e.getMessage(), equalTo("No compatible fields could be detected in index [source_index]"));
|
|
|
}
|
|
@@ -217,7 +217,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
FetchSourceContext desiredFields = new FetchSourceContext(true, new String[]{"your*", "my_*"}, new String[]{"*nope"});
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(desiredFields), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(desiredFields), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<String> extractedFieldNames = extractedFields.getAllFields().stream().map(ExtractedField::getName)
|
|
@@ -234,7 +234,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), false, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, false, 100, fieldCapabilities);
|
|
|
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> extractedFieldsDetector.detect());
|
|
|
|
|
|
assertThat(e.getMessage(), equalTo("A field that matches the dest.results_field [ml] already exists; " +
|
|
@@ -250,7 +250,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), true, 100, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, true, 100, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<String> extractedFieldNames = extractedFields.getAllFields().stream().map(ExtractedField::getName)
|
|
@@ -258,6 +258,23 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
assertThat(extractedFieldNames, equalTo(Arrays.asList("my_field1", "your_field2")));
|
|
|
}
|
|
|
|
|
|
+ public void testDetectedExtractedFields_NullResultsField() {
|
|
|
+ FieldCapabilitiesResponse fieldCapabilities = new MockFieldCapsResponseBuilder()
|
|
|
+ .addAggregatableField(RESULTS_FIELD, "float")
|
|
|
+ .addAggregatableField("my_field1", "float")
|
|
|
+ .addAggregatableField("your_field2", "float")
|
|
|
+ .addAggregatableField("your_keyword", "keyword")
|
|
|
+ .build();
|
|
|
+
|
|
|
+ ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), null, false, 100, fieldCapabilities);
|
|
|
+ ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
+
|
|
|
+ List<String> extractedFieldNames = extractedFields.getAllFields().stream().map(ExtractedField::getName)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ assertThat(extractedFieldNames, equalTo(Arrays.asList(RESULTS_FIELD, "my_field1", "your_field2")));
|
|
|
+ }
|
|
|
+
|
|
|
public void testDetectedExtractedFields_GivenLessFieldsThanDocValuesLimit() {
|
|
|
FieldCapabilitiesResponse fieldCapabilities = new MockFieldCapsResponseBuilder()
|
|
|
.addAggregatableField("field_1", "float")
|
|
@@ -267,7 +284,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), true, 4, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, true, 4, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<String> extractedFieldNames = extractedFields.getAllFields().stream().map(ExtractedField::getName)
|
|
@@ -286,7 +303,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), true, 3, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, true, 3, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<String> extractedFieldNames = extractedFields.getAllFields().stream().map(ExtractedField::getName)
|
|
@@ -305,7 +322,7 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
.build();
|
|
|
|
|
|
ExtractedFieldsDetector extractedFieldsDetector = new ExtractedFieldsDetector(
|
|
|
- SOURCE_INDEX, buildOutlierDetectionConfig(), true, 2, fieldCapabilities);
|
|
|
+ SOURCE_INDEX, buildOutlierDetectionConfig(), RESULTS_FIELD, true, 2, fieldCapabilities);
|
|
|
ExtractedFields extractedFields = extractedFieldsDetector.detect();
|
|
|
|
|
|
List<String> extractedFieldNames = extractedFields.getAllFields().stream().map(ExtractedField::getName)
|
|
@@ -320,9 +337,10 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
private static DataFrameAnalyticsConfig buildOutlierDetectionConfig(FetchSourceContext analyzedFields) {
|
|
|
- return new DataFrameAnalyticsConfig.Builder("foo")
|
|
|
+ return new DataFrameAnalyticsConfig.Builder()
|
|
|
+ .setId("foo")
|
|
|
.setSource(new DataFrameAnalyticsSource(SOURCE_INDEX, null))
|
|
|
- .setDest(new DataFrameAnalyticsDest(DEST_INDEX, null))
|
|
|
+ .setDest(new DataFrameAnalyticsDest(DEST_INDEX, RESULTS_FIELD))
|
|
|
.setAnalyzedFields(analyzedFields)
|
|
|
.setAnalysis(new OutlierDetection())
|
|
|
.build();
|
|
@@ -333,9 +351,10 @@ public class ExtractedFieldsDetectorTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
private static DataFrameAnalyticsConfig buildRegressionConfig(String dependentVariable, FetchSourceContext analyzedFields) {
|
|
|
- return new DataFrameAnalyticsConfig.Builder("foo")
|
|
|
+ return new DataFrameAnalyticsConfig.Builder()
|
|
|
+ .setId("foo")
|
|
|
.setSource(new DataFrameAnalyticsSource(SOURCE_INDEX, null))
|
|
|
- .setDest(new DataFrameAnalyticsDest(DEST_INDEX, null))
|
|
|
+ .setDest(new DataFrameAnalyticsDest(DEST_INDEX, RESULTS_FIELD))
|
|
|
.setAnalyzedFields(analyzedFields)
|
|
|
.setAnalysis(new Regression(dependentVariable))
|
|
|
.build();
|