Skip to content

Commit 61644ca

Browse files
committed
fix query parsing
Signed-off-by: Sandesh Kumar <[email protected]>
1 parent c54f86d commit 61644ca

File tree

1 file changed

+7
-31
lines changed

1 file changed

+7
-31
lines changed

server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/utils/StarTreeQueryHelper.java

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.opensearch.search.startree.StarTreeQueryContext;
4242

4343
import java.io.IOException;
44-
import java.util.HashMap;
4544
import java.util.List;
4645
import java.util.Map;
4746
import java.util.Set;
@@ -111,46 +110,23 @@ private static StarTreeQueryContext tryCreateStarTreeQueryContext(
111110
Map<String, Long> queryMap;
112111
if (queryBuilder == null || queryBuilder instanceof MatchAllQueryBuilder) {
113112
queryMap = null;
114-
} else if (queryBuilder instanceof TermQueryBuilder) {
113+
} else if (queryBuilder instanceof TermQueryBuilder termQueryBuilder) {
115114
// TODO: Add support for keyword fields
116-
if (compositeFieldType.getDimensions().stream().anyMatch(d -> d.getDocValuesType() != DocValuesType.SORTED_NUMERIC)) {
117-
// return null for non-numeric fields
118-
return null;
119-
}
120-
121-
List<String> supportedDimensions = compositeFieldType.getDimensions()
115+
Dimension matchedDimension = compositeFieldType.getDimensions()
122116
.stream()
123-
.map(Dimension::getField)
124-
.collect(Collectors.toList());
125-
queryMap = getStarTreePredicates(queryBuilder, supportedDimensions);
126-
if (queryMap == null) {
117+
.filter(d -> (d.getField().equals(termQueryBuilder.fieldName()) && d.getDocValuesType() == DocValuesType.SORTED_NUMERIC))
118+
.findFirst()
119+
.orElse(null);
120+
if (matchedDimension == null) {
127121
return null;
128122
}
123+
queryMap = Map.of(termQueryBuilder.fieldName(), Long.parseLong(termQueryBuilder.value().toString()));
129124
} else {
130125
return null;
131126
}
132127
return new StarTreeQueryContext(compositeIndexFieldInfo, queryMap, cacheStarTreeValuesSize);
133128
}
134129

135-
/**
136-
* Parse query body to star-tree predicates
137-
* @param queryBuilder to match star-tree supported query shape
138-
* @return predicates to match
139-
*/
140-
private static Map<String, Long> getStarTreePredicates(QueryBuilder queryBuilder, List<String> supportedDimensions) {
141-
TermQueryBuilder tq = (TermQueryBuilder) queryBuilder;
142-
String field = tq.fieldName();
143-
if (!supportedDimensions.contains(field)) {
144-
return null;
145-
}
146-
long inputQueryVal = Long.parseLong(tq.value().toString());
147-
148-
// Create a map with the field and the value
149-
Map<String, Long> predicateMap = new HashMap<>();
150-
predicateMap.put(field, inputQueryVal);
151-
return predicateMap;
152-
}
153-
154130
private static boolean validateStarTreeMetricSupport(
155131
CompositeDataCubeFieldType compositeIndexFieldInfo,
156132
AggregatorFactory aggregatorFactory

0 commit comments

Comments
 (0)