Java Elasticsearch筛选器结果忽略搜索关键字
我得到了良好的结果与正常的搜索查询Java Elasticsearch筛选器结果忽略搜索关键字,java,spring,spring-boot,
elasticsearch,Java,Spring,Spring Boot,
elasticsearch,我得到了良好的结果与正常的搜索查询 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); String keyword = requestBody.getKeyword(); queryBuilder.should(QueryBuilders.matchQuery("fullText&
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
String keyword = requestBody.getKeyword();
queryBuilder.should(QueryBuilders.matchQuery("fullText", keyword));
searchSourceBuilder.query(queryBuilder);
searchSourceBuilder.from(requestBody.getPage() - 1);
searchSourceBuilder.size(BROWSE_PAGE_DATA_LIMIT);
searchRequest.source(searchSourceBuilder);
try {
return client.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
throw new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "Error in ES search");
}
但是当我添加过滤时,结果是忽略我的搜索关键字
queryBuilder.filter(QueryBuilders.termsQuery("authorId", filter.getAuthorIds()));
在这里,我试图替换solr的fq。我的方法有什么问题。摘自
如果bool查询至少包含一个shoul子句,并且没有must或
筛选子句,默认值为1。否则,将使用默认值
是0
基本上,如果bool查询中有一个filter或/和must子句,那么应该子句将被忽略,直到min_should_match设置为合适的值
将minShouldMatch设置为1。e、 g:
queryBuilder.should(QueryBuilders.matchQuery("fullText", keyword)).minimumShouldMatch(1);