in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/util/TablestoreHelper.java [712:767]
public static Query parseSearchFilter(AbstractOperationFilter metadataFilter) {
if (metadataFilter instanceof Eq) {
Eq eq = (Eq) metadataFilter;
return QueryBuilders.term(eq.getKey(), eq.getValue()).build();
} else if (metadataFilter instanceof Exists) {
Exists op = (Exists) metadataFilter;
return QueryBuilders.exists(op.getKey()).build();
} else if (metadataFilter instanceof Gt) {
Gt gt = (Gt) metadataFilter;
return QueryBuilders.range(gt.getKey()).greaterThan(gt.getValue()).build();
} else if (metadataFilter instanceof Gte) {
Gte gte = (Gte) metadataFilter;
return QueryBuilders.range(gte.getKey()).greaterThanOrEqual(gte.getValue()).build();
} else if (metadataFilter instanceof In) {
In in = (In) metadataFilter;
TermsQuery.Builder terms = QueryBuilders.terms(in.getKey());
for (Object value : in.getValues()) {
terms.addTerm(value);
}
return terms.build();
} else if (metadataFilter instanceof Lt) {
Lt lt = (Lt) metadataFilter;
return QueryBuilders.range(lt.getKey()).lessThan(lt.getValue()).build();
} else if (metadataFilter instanceof Lte) {
Lte lte = (Lte) metadataFilter;
return QueryBuilders.range(lte.getKey()).lessThanOrEqual(lte.getValue()).build();
} else if (metadataFilter instanceof NotEq) {
NotEq notEq = (NotEq) metadataFilter;
return QueryBuilders.bool().mustNot(QueryBuilders.term(notEq.getKey(), notEq.getValue()).build()).build();
} else if (metadataFilter instanceof NotIn) {
NotIn notIn = (NotIn) metadataFilter;
TermsQuery.Builder terms = QueryBuilders.terms(notIn.getKey());
for (Object value : notIn.getValues()) {
terms.addTerm(value);
}
return QueryBuilders.bool().mustNot(terms.build()).build();
} else if (metadataFilter instanceof TextMatch) {
TextMatch match = (TextMatch) metadataFilter;
return QueryBuilders.match(match.getKey(), match.getValue()).build();
} else if (metadataFilter instanceof TextMatchPhrase) {
TextMatchPhrase matchPhrase = (TextMatchPhrase) metadataFilter;
return QueryBuilders.matchPhrase(matchPhrase.getKey(), matchPhrase.getValue()).build();
} else if (metadataFilter instanceof VectorQuery) {
VectorQuery vectorQuery = (VectorQuery) metadataFilter;
KnnVectorQuery.Builder builder = QueryBuilders.knnVector(vectorQuery.getKey(), vectorQuery.getTopK(), vectorQuery.getQueryVector());
if (vectorQuery.getFilter() != null) {
builder.filter(parserSearchFilters(vectorQuery.getFilter()));
}
if (vectorQuery.getMinScore() != null) {
builder.minScore(vectorQuery.getMinScore());
}
return builder.build();
} else {
throw Exceptions.illegalArgument("unsupported filter type:%s, filter:%s", metadataFilter.getClass(), metadataFilter);
}
}