1
userIdがnullの場合、.withQuery(QueryBuilders.matchQuery( "createdBy"、userId))を削除します。この条件では、渡すパラメータに従って動的に検索を実装する方法はありますか。NativeSearchQueryBuilder()で動的に検索を実装する方法は?
右、 matchQueryがNULL値を受け入れて、スローされません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(クエリ)、Province.class); はfalseを返します。 hasChildQueryを解決できません。どのクラスをインポートする必要がありますか? @Joanna –
'QueryBuilders.hasChildQuery(type、query、scoreMode);' 'org.elasticsearch.index.query.QueryBuilders'からの使用 – Joanna