簡體   English   中英

Elasticsearch REST高級客戶端結合了查詢構建器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM