1
如果userId为空,我想删除.withQuery(QueryBuilders.matchQuery(“createdBy”,userId))这个条件,我该如何根据我的传递参数动态地实现搜索。如何使用NativeSearchQueryBuilder()动态实现搜索?
public <T> List<T> search(String index, String type, String tenantId ,String userId, String queryString, Class<T> clzz){
log.debug("==========search==========");
String allField = "_all";
MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(queryString, allField);
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withIndices(index)
.withTypes(type)
.withQuery(multiMatchQueryBuilder)
.withQuery(QueryBuilders.matchQuery("tenantId",tenantId))
.withQuery(QueryBuilders.matchQuery("createdBy",userId))
.build();
List<T> list =
operations.queryForPage(searchQuery,clzz).getContent();
return list;
}
非常感谢。 –
'QueryBuilder query = hasChildQuery(Province.CHILD_TYPE,QueryBuilders.termQuery(“name”,name.toLowerCase()),ScoreMode.None); 列表 parents = operations.queryForList(新的NativeSearchQuery(query),Province.class); 返回false;'。 hasChildQuery无法解析,应导入哪个类? @Joanna –
使用'QueryBuilders.hasChildQuery(type,query,scoreMode);'from'org.elasticsearch.index.query.QueryBuilders' – Joanna