Bor*_*toy 1 java elasticsearch spring-boot
我需要使用ES REST高级客户端(Java)创建类似高级搜索的内容。
首先,我有一个搜索关键字,可以搜索所有字段。
我用QueryStringQueryBuilder这个。
SearchSourceBuilder ticketInfoSourceBuilder = new SearchSourceBuilder();
ticketInfoSourceBuilder.from(pageable.getOffset());
ticketInfoSourceBuilder.size(pageable.getPageSize());
ticketInfoSourceBuilder.sort(new FieldSortBuilder(sortField).order(sortOrder));
ticketInfoSourceBuilder.query(QueryBuilders.queryStringQuery("ABC1234"));
Run Code Online (Sandbox Code Playgroud)
现在,我需要使用添加更多过滤器TermsQueryBuilder。
是否可以将两个查询构建器结合在一起?
我想添加以下过滤器:
"terms" : { "ticket.inquiryType" : ["INQTYP01", "INQTYP06"]}
"terms" : { "ticket.status" : ["NEW", "CLOSED"]}
"terms" : { "ticket.ownership" : ["OWNED", "OTHER_OWNER"]}
Run Code Online (Sandbox Code Playgroud)
是否可以将两个查询构建器结合起来以实现类似高级搜索的功能?
谢谢!
是的,您可以使用以下bool查询来做到这一点:
QueryBuilder query = QueryBuilders.boolQuery()
.must(QueryBuilders.queryStringQuery("ABC1234"))
.filter(QueryBuilders.termsQuery("ticket.inquiryType", "INQTYP01", "INQTYP06"))
.filter(QueryBuilders.termsQuery("ticket.status", "NEW", "CLOSED"))
.filter(QueryBuilders.termsQuery("ticket.ownership", "OWNED", "OTHER_OWNER"));
ticketInfoSourceBuilder.query(query);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2466 次 |
| 最近记录: |