学习还是多看官方文档吧,比其他的 case 多,更加全面;安全可靠
Quick start | Elasticsearch Guide [7.17] | Elastic
Getting started | Elasticsearch Java API Client [8.15] | Elastic
Java High Level REST Client | Java REST Client [7.17] | Elastic
// 等价SQL: shop_id=100 and status=3 or (price >= 100 and price <= 300)
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("shop_id", 100)) // 通过must设置term子查询
.must(QueryBuilders.termQuery("status", 3)) // 通过must设置term子查询
.should(QueryBuilders.rangeQuery("price").gte(100).lte(300));// 通过should设置range子查询
SearchRequest searchRequest = new SearchRequest();
// 通过SearchSourceBuilder构建搜索参数
SearchSourceBuilder builder = new SearchSourceBuilder();
// 设置query参数,绑定前面创建的Query对象
builder.query(boolQueryBuilder);
// 设置SearchRequest搜索参数
searchRequest.source(builder);
// 执行ES请求
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
bool->must->bool->should
可以嵌套使用
GET /test_xxx/_search
{
"query": {
"bool": {
"must":[
{
"bool" : {
"should": [
{
"nested" : {
"query" : {
"match": {
"xxx1Doc.xxxValue" : {
"query" : "xxx"
}
}
},
"path" : "xxx1Doc",
"inner_hits" : {
"name": "u1",
"highlight" : {
"fields" : {
"xxx1Doc.xxxValue" : { }
}
}
}
}
},
{
"nested" : {
"query" : {
"match" : {
"xxx2Doc.xxxValue" : {
"query" : "xxx"
}
}
},
"path" : "xxx2Doc",
"inner_hits" : {
"name": "h1",
"highlight" : {
"fields" : {
"xxx2Doc.xxxValue" : { }
}
}
}
}
},
{
"nested" : {
"query" : {
"match" : {
"xxx3Doc.xxxValue" : {
"query" : "xxx"
}
}
},
"path" : "xxx3Doc",
"inner_hits" : {
"name": "a1",
"highlight" : {
"fields" : {
"xxx3Doc.xxxValue" : { }
}
}
}
}
}
]
}
},{
"bool" : {
"should": [
{
"nested" : {
"query" : {
"match": {
"xxx1Doc.xxxValue" : {
"query" : "xxx"
}
}
},
"path" : "xxx1Doc",
"inner_hits" : {
"name": "u2",
"highlight" : {
"fields" : {
"xxx1Doc.xxxValue" : { }
}
}
}
}
},
{
"nested" : {
"query" : {
"match" : {
"xxx2Doc.xxxValue" : {
"query" : "xxx"
}
}
},
"path" : "xxx2Doc",
"inner_hits" : {
"name": "h2",
"highlight" : {
"fields" : {
"xxx2Doc.xxxValue" : { }
}
}
}
}
},
{
"nested" : {
"query" : {
"match" : {
"xxx3Doc.xxxValue" : {
"query" : "xxx"
}
}
},
"path" : "xxx3Doc",
"inner_hits" : {
"name": "a2",
"highlight" : {
"fields" : {
"xxx3Doc.xxxValue" : { }
}
}
}
}
}
]
}
}],
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
}