Skip to content

Commit 18fe9f6

Browse files
[7.5][ML] Move field extraction logic to its own package (#48709) (#48713)
Moves common field extraction logic to its own package so that it can be used both for anomaly detection and data frame analytics. In preparation for refactoring extraction fields to be simpler and to support multi-fields properly. Backport of #48709
1 parent ddf04fb commit 18fe9f6

18 files changed

+29
-30
lines changed

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/extractor/scroll/ScrollDataExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.elasticsearch.xpack.core.ml.datafeed.extractor.DataExtractor;
2525
import org.elasticsearch.xpack.core.ml.datafeed.extractor.ExtractorUtils;
2626
import org.elasticsearch.xpack.ml.datafeed.DatafeedTimingStatsReporter;
27-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
27+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
2828

2929
import java.io.ByteArrayInputStream;
3030
import java.io.ByteArrayOutputStream;

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/extractor/scroll/ScrollDataExtractorContext.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import org.elasticsearch.index.query.QueryBuilder;
99
import org.elasticsearch.search.builder.SearchSourceBuilder;
10-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.TimeBasedExtractedFields;
1110

1211
import java.util.List;
1312
import java.util.Map;

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/extractor/scroll/ScrollDataExtractorFactory.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.elasticsearch.xpack.core.ml.utils.MlStrings;
2222
import org.elasticsearch.xpack.ml.datafeed.DatafeedTimingStatsReporter;
2323
import org.elasticsearch.xpack.ml.datafeed.extractor.DataExtractorFactory;
24-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.TimeBasedExtractedFields;
2524

2625
import java.util.Objects;
2726

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/extractor/scroll/SearchHitToJsonProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import org.elasticsearch.common.xcontent.XContentBuilder;
1010
import org.elasticsearch.common.xcontent.json.JsonXContent;
1111
import org.elasticsearch.search.SearchHit;
12-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
13-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedFields;
12+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
13+
import org.elasticsearch.xpack.ml.extractor.ExtractedFields;
1414

1515
import java.io.IOException;
1616
import java.io.OutputStream;
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
* or more contributor license agreements. Licensed under the Elastic License;
44
* you may not use this file except in compliance with the Elastic License.
55
*/
6-
package org.elasticsearch.xpack.ml.datafeed.extractor.fields;
6+
package org.elasticsearch.xpack.ml.datafeed.extractor.scroll;
77

88
import org.elasticsearch.action.fieldcaps.FieldCapabilitiesResponse;
99
import org.elasticsearch.search.SearchHit;
1010
import org.elasticsearch.xpack.core.ml.datafeed.DatafeedConfig;
1111
import org.elasticsearch.xpack.core.ml.job.config.Job;
12+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
13+
import org.elasticsearch.xpack.ml.extractor.ExtractedFields;
1214

1315
import java.util.ArrayList;
1416
import java.util.Arrays;

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/dataframe/extractor/DataFrameDataExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.elasticsearch.search.sort.SortOrder;
2525
import org.elasticsearch.xpack.core.ClientHelper;
2626
import org.elasticsearch.xpack.core.ml.dataframe.analyses.DataFrameAnalysis;
27-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
27+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
2828
import org.elasticsearch.xpack.ml.dataframe.DataFrameAnalyticsIndex;
2929

3030
import java.io.IOException;

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/dataframe/extractor/DataFrameDataExtractorContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
package org.elasticsearch.xpack.ml.dataframe.extractor;
77

88
import org.elasticsearch.index.query.QueryBuilder;
9-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedFields;
9+
import org.elasticsearch.xpack.ml.extractor.ExtractedFields;
1010

1111
import java.util.List;
1212
import java.util.Map;

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/dataframe/extractor/DataFrameDataExtractorFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
import org.elasticsearch.xpack.core.ClientHelper;
3333
import org.elasticsearch.xpack.core.ml.dataframe.DataFrameAnalyticsConfig;
3434
import org.elasticsearch.xpack.core.ml.utils.ExceptionsHelper;
35-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
36-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedFields;
35+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
36+
import org.elasticsearch.xpack.ml.extractor.ExtractedFields;
3737

3838
import java.util.Arrays;
3939
import java.util.Iterator;

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/dataframe/extractor/ExtractedFieldsDetector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import org.elasticsearch.xpack.core.ml.job.messages.Messages;
2525
import org.elasticsearch.xpack.core.ml.utils.ExceptionsHelper;
2626
import org.elasticsearch.xpack.core.ml.utils.NameResolver;
27-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
28-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedFields;
27+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
28+
import org.elasticsearch.xpack.ml.extractor.ExtractedFields;
2929
import org.elasticsearch.xpack.ml.dataframe.DataFrameAnalyticsIndex;
3030

3131
import java.util.ArrayList;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* or more contributor license agreements. Licensed under the Elastic License;
44
* you may not use this file except in compliance with the Elastic License.
55
*/
6-
package org.elasticsearch.xpack.ml.datafeed.extractor.fields;
6+
package org.elasticsearch.xpack.ml.extractor;
77

88
import org.elasticsearch.common.document.DocumentField;
99
import org.elasticsearch.geometry.Geometry;
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* or more contributor license agreements. Licensed under the Elastic License;
44
* you may not use this file except in compliance with the Elastic License.
55
*/
6-
package org.elasticsearch.xpack.ml.datafeed.extractor.fields;
6+
package org.elasticsearch.xpack.ml.extractor;
77

88
import org.elasticsearch.action.fieldcaps.FieldCapabilities;
99
import org.elasticsearch.action.fieldcaps.FieldCapabilitiesResponse;
@@ -57,17 +57,17 @@ public static ExtractedFields build(Collection<String> allFields, Set<String> sc
5757
return new ExtractedFields(allFields.stream().map(field -> extractionMethodDetector.detect(field)).collect(Collectors.toList()));
5858
}
5959

60-
protected static class ExtractionMethodDetector {
60+
public static class ExtractionMethodDetector {
6161

6262
private final Set<String> scriptFields;
6363
private final FieldCapabilitiesResponse fieldsCapabilities;
6464

65-
protected ExtractionMethodDetector(Set<String> scriptFields, FieldCapabilitiesResponse fieldsCapabilities) {
65+
public ExtractionMethodDetector(Set<String> scriptFields, FieldCapabilitiesResponse fieldsCapabilities) {
6666
this.scriptFields = scriptFields;
6767
this.fieldsCapabilities = fieldsCapabilities;
6868
}
6969

70-
protected ExtractedField detect(String field) {
70+
public ExtractedField detect(String field) {
7171
String internalField = field;
7272
ExtractedField.ExtractionMethod method = ExtractedField.ExtractionMethod.SOURCE;
7373
Set<String> types = getTypes(field);
@@ -107,7 +107,7 @@ private Set<String> getTypes(String field) {
107107
return fieldCaps == null ? Collections.emptySet() : fieldCaps.keySet();
108108
}
109109

110-
protected boolean isAggregatable(String field) {
110+
public boolean isAggregatable(String field) {
111111
Map<String, FieldCapabilities> fieldCaps = fieldsCapabilities.getField(field);
112112
if (fieldCaps == null || fieldCaps.isEmpty()) {
113113
throw new IllegalArgumentException("cannot retrieve field [" + field + "] because it has no mappings");

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/datafeed/extractor/scroll/ScrollDataExtractorTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
import org.elasticsearch.xpack.core.ml.datafeed.DatafeedTimingStats;
3333
import org.elasticsearch.xpack.ml.datafeed.DatafeedTimingStatsReporter;
3434
import org.elasticsearch.xpack.ml.datafeed.DatafeedTimingStatsReporter.DatafeedTimingStatsPersister;
35-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
36-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.TimeBasedExtractedFields;
35+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
3736
import org.junit.Before;
3837
import org.mockito.ArgumentCaptor;
3938

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/datafeed/extractor/scroll/SearchHitToJsonProcessorTests.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@
77

88
import org.elasticsearch.search.SearchHit;
99
import org.elasticsearch.test.ESTestCase;
10-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
11-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedFields;
12-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.TimeBasedExtractedFields;
10+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
11+
import org.elasticsearch.xpack.ml.extractor.ExtractedFields;
1312
import org.elasticsearch.xpack.ml.test.SearchHitBuilder;
1413

1514
import java.io.ByteArrayOutputStream;
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* or more contributor license agreements. Licensed under the Elastic License;
44
* you may not use this file except in compliance with the Elastic License.
55
*/
6-
package org.elasticsearch.xpack.ml.datafeed.extractor.fields;
6+
package org.elasticsearch.xpack.ml.datafeed.extractor.scroll;
77

88
import org.elasticsearch.action.fieldcaps.FieldCapabilities;
99
import org.elasticsearch.action.fieldcaps.FieldCapabilitiesResponse;
@@ -15,6 +15,7 @@
1515
import org.elasticsearch.xpack.core.ml.job.config.DataDescription;
1616
import org.elasticsearch.xpack.core.ml.job.config.Detector;
1717
import org.elasticsearch.xpack.core.ml.job.config.Job;
18+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
1819
import org.elasticsearch.xpack.ml.test.SearchHitBuilder;
1920

2021
import java.util.Arrays;

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/extractor/DataFrameDataExtractorTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
import org.elasticsearch.xpack.core.ml.dataframe.analyses.Classification;
2828
import org.elasticsearch.xpack.core.ml.dataframe.analyses.OutlierDetectionTests;
2929
import org.elasticsearch.xpack.core.ml.dataframe.analyses.Regression;
30-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
31-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedFields;
30+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
31+
import org.elasticsearch.xpack.ml.extractor.ExtractedFields;
3232
import org.elasticsearch.xpack.ml.test.SearchHitBuilder;
3333
import org.junit.Before;
3434
import org.mockito.ArgumentCaptor;

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/extractor/ExtractedFieldsDetectorTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import org.elasticsearch.xpack.core.ml.dataframe.analyses.Classification;
1818
import org.elasticsearch.xpack.core.ml.dataframe.analyses.OutlierDetection;
1919
import org.elasticsearch.xpack.core.ml.dataframe.analyses.Regression;
20-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedField;
21-
import org.elasticsearch.xpack.ml.datafeed.extractor.fields.ExtractedFields;
20+
import org.elasticsearch.xpack.ml.extractor.ExtractedField;
21+
import org.elasticsearch.xpack.ml.extractor.ExtractedFields;
2222
import org.elasticsearch.xpack.ml.test.SearchHitBuilder;
2323

2424
import java.util.ArrayList;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* or more contributor license agreements. Licensed under the Elastic License;
44
* you may not use this file except in compliance with the Elastic License.
55
*/
6-
package org.elasticsearch.xpack.ml.datafeed.extractor.fields;
6+
package org.elasticsearch.xpack.ml.extractor;
77

88
import org.elasticsearch.search.SearchHit;
99
import org.elasticsearch.test.ESTestCase;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* or more contributor license agreements. Licensed under the Elastic License;
44
* you may not use this file except in compliance with the Elastic License.
55
*/
6-
package org.elasticsearch.xpack.ml.datafeed.extractor.fields;
6+
package org.elasticsearch.xpack.ml.extractor;
77

88
import org.elasticsearch.action.fieldcaps.FieldCapabilities;
99
import org.elasticsearch.action.fieldcaps.FieldCapabilitiesResponse;

0 commit comments

Comments
 (0)