@@ -25,15 +25,18 @@ public class DataFrameDataExtractorFactory {
2525 private final Client client ;
2626 private final String analyticsId ;
2727 private final List <String > indices ;
28+ private final QueryBuilder sourceQuery ;
2829 private final ExtractedFields extractedFields ;
2930 private final Map <String , String > headers ;
3031 private final boolean includeRowsWithMissingValues ;
3132
32- public DataFrameDataExtractorFactory (Client client , String analyticsId , List <String > indices , ExtractedFields extractedFields ,
33- Map <String , String > headers , boolean includeRowsWithMissingValues ) {
33+ private DataFrameDataExtractorFactory (Client client , String analyticsId , List <String > indices , QueryBuilder sourceQuery ,
34+ ExtractedFields extractedFields , Map <String , String > headers ,
35+ boolean includeRowsWithMissingValues ) {
3436 this .client = Objects .requireNonNull (client );
3537 this .analyticsId = Objects .requireNonNull (analyticsId );
3638 this .indices = Objects .requireNonNull (indices );
39+ this .sourceQuery = Objects .requireNonNull (sourceQuery );
3740 this .extractedFields = Objects .requireNonNull (extractedFields );
3841 this .headers = headers ;
3942 this .includeRowsWithMissingValues = includeRowsWithMissingValues ;
@@ -54,7 +57,12 @@ public DataFrameDataExtractor newExtractor(boolean includeSource) {
5457 }
5558
5659 private QueryBuilder createQuery () {
57- return includeRowsWithMissingValues ? QueryBuilders .matchAllQuery () : allExtractedFieldsExistQuery ();
60+ BoolQueryBuilder query = QueryBuilders .boolQuery ();
61+ query .filter (sourceQuery );
62+ if (includeRowsWithMissingValues == false ) {
63+ query .filter (allExtractedFieldsExistQuery ());
64+ }
65+ return query ;
5866 }
5967
6068 private QueryBuilder allExtractedFieldsExistQuery () {
@@ -77,8 +85,8 @@ private QueryBuilder allExtractedFieldsExistQuery() {
7785 */
7886 public static DataFrameDataExtractorFactory createForSourceIndices (Client client , String taskId , DataFrameAnalyticsConfig config ,
7987 ExtractedFields extractedFields ) {
80- return new DataFrameDataExtractorFactory (client , taskId , Arrays .asList (config .getSource ().getIndex ()), extractedFields ,
81- config .getHeaders (), config .getAnalysis ().supportsMissingValues ());
88+ return new DataFrameDataExtractorFactory (client , taskId , Arrays .asList (config .getSource ().getIndex ()),
89+ config .getSource (). getParsedQuery (), extractedFields , config . getHeaders (), config .getAnalysis ().supportsMissingValues ());
8290 }
8391
8492 /**
@@ -100,8 +108,8 @@ public static void createForDestinationIndex(Client client,
100108 extractedFieldsDetector -> {
101109 ExtractedFields extractedFields = extractedFieldsDetector .detect ().v1 ();
102110 DataFrameDataExtractorFactory extractorFactory = new DataFrameDataExtractorFactory (client , config .getId (),
103- Collections .singletonList (config .getDest ().getIndex ()), extractedFields , config .getHeaders () ,
104- config .getAnalysis ().supportsMissingValues ());
111+ Collections .singletonList (config .getDest ().getIndex ()), config .getSource (). getParsedQuery (), extractedFields ,
112+ config .getHeaders (), config . getAnalysis ().supportsMissingValues ());
105113 listener .onResponse (extractorFactory );
106114 },
107115 listener ::onFailure
0 commit comments