![](/img/trans.png)
[英]ElasticSearch Multi Term Query With Java High-Level REST Client
[英]Elasticsearch REST High Level Client combine query builders
我需要使用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"));
現在,我需要使用TermsQueryBuilder
添加更多過濾器。
是否可以將兩個查詢構建器結合在一起?
我想添加以下過濾器:
"terms" : { "ticket.inquiryType" : ["INQTYP01", "INQTYP06"]}
"terms" : { "ticket.status" : ["NEW", "CLOSED"]}
"terms" : { "ticket.ownership" : ["OWNED", "OTHER_OWNER"]}
是否可以將兩個查詢構建器結合起來以實現類似高級搜索的功能?
謝謝!
是的,您可以使用以下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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.