java query api_ElasticSearch(十二) Bool Query JAVA API
Bool Query 用于組合多個葉子或復合查詢子句的默認查詢
must 相當于 與 & =
must not 相當于 非 ~ ? !=
should 相當于 或 ?| ? or
filter ?過濾
boolQuery()
.must(termQuery("content", "test1"))
.must(termQuery("content", "test4"))
.mustNot(termQuery("content", "test2"))
.should(termQuery("content", "test3"))
.filter(termQuery("content", "test5"));
private SearchRequest getSearchRequest(RequestType request) {
SearchRequest sr = new SearchRequest();
//指定索引名稱,如未指定則會查詢所有
sr.indices(ElasticSearchConst.XXX_INDEX);
sr.types(ElasticSearchConst.XXX_TYPE);
SearchSourceBuilder source = new SearchSourceBuilder();
BoolQueryBuilder bq = QueryBuilders.boolQuery();
getQueryBuilder(request, bq);
// from 從0開始,包含前后邊界 實際是 ?<= ?>=
source.from(request.getRowStart());
source.size(request.getRowSize());
source.query(bq);
setSort(request, source);
sr.source(source);
return sr;
}
private void getQueryBuilder(RequestType request, BoolQueryBuilder bq) {
getOrderQueryBuilder(request, bq);
addPurchaseOrderQueryBuilder(request, bq);
}
/**
* 查詢條件
*
* @param request
* @param bq
*/
private void getOrderQueryBuilder(RequestType request, BoolQueryBuilder bq) {
// termQuery?精確匹配,不分詞 相當于 等于 =
//Type.childType 多層類型嵌套,具體索引結構,參考mapping
// ?GET ?yourindexname/_mapping
Mapping:
{
"yourindexname": {
"mappings": {
"type1": {
"properties": {
"childtype": {
"properties": {
"cedStatus": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
bq.must(QueryBuilders.termQuery("Type.childType", request.getOrderId()));
//rangeQuery 范圍查詢,最大范圍不超過1w
bq.must(QueryBuilders.rangeQuery("Type.childType.departureDate")
.gte(DateUtil.toSqlTimeStamp(request.getDepartureDateStart().getTime()).getTime())
.lte(DateUtil.toSqlTimeStamp(request.getDepartureDateEnd().getTime()).getTime()));
//QueryBuilders.matchPhraseQuery ?匹配查詢,不分詞,相當于 contains
//matchPhraseQuery 是直接以一個短語的形式查詢,順序無差,且連接在一起
pobq.must(QueryBuilders.matchPhraseQuery(
String.format("%s%s%s", preFix, i, ".vacationVBKPurchaseOrderBaseInfoDto.contactName"),
request.getContactName()));
總結
以上是生活随笔為你收集整理的java query api_ElasticSearch(十二) Bool Query JAVA API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#与java_C#与Java的区别
- 下一篇: 如何在Mac电脑查看后台程序如何打开电脑