easy-es

学习还是多看官方文档吧,比其他的 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

Java Elasticsearch教程 - 梯子教程网

BoolQueryBuilder

// 等价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
    }
  }
}