算分函数查询
@SpringBootTestpublic class MyTest{    //注入RestHighLevelClient对象    @Autowired    private RestHighLevelClient restHighLevelClient;    @Test    public void test() throws IOException {        //准备SearchRequest请求对象,并指定索引库名        SearchRequest searchRequest = new SearchRequest(索引库名);        //准备BoolQueryBuilder查询对象        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();        //在BoolQueryBuilder查询对象中添加TermQueryBuilder查询对象,must表示必须匹配且参与算分        boolQueryBuilder.must(QueryBuilders.termQuery(字段名, 搜索词));        //在BoolQueryBuilder查询对象中添加RangeQueryBuilder查询对象,filter表示必须匹配且不参与算分        boolQueryBuilder.filter(QueryBuilders.rangeQuery(字段名).gte(大于等于的值).lte(小于等于的值));        //准备FunctionScoreQueryBuilder查询对象,并在其中添加BoolQueryBuilder查询对象        FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery(            //原始查询,相关性算分的查询            boolQueryBuilder,            //算分函数数组            new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{                //创建算分函数对象并将其放入数组中                new FunctionScoreQueryBuilder.FilterFunctionBuilder(                    //指定满足算分函数的过滤条件                    QueryBuilders.termQuery(字段名, 搜索词),                    //指定算分函数和值                    ScoreFunctionBuilders.算分函数(值)            )        });        //在SearchRequest请求对象中放入FunctionScoreQueryBuilder查询对象        searchRequest.source().query(functionScoreQueryBuilder);        //发送请求,得到响应对象        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);        //从响应对象中获取响应结果        SearchHits searchHits = searchResponse.getHits();        //获取文档的总条数        long total = searchHits.getTotalHits().value;        //获取搜索结果数组        SearchHit[] hits = searchHits.getHits();        //创建文档集合,用于存放结果        List<文档类名> 集合对象名 = new ArrayList<>();        //遍历数组        for (SearchHit hit : hits) {            //获取Json格式的文档内容            String json = hit.getSourceAsString();            //反序列化Json,这里需要引入fastjson的依赖            文档类名 文档对象名 = JSON.parseObject(json, 文档类名.class);            //将结果放入集合            集合对象名.add(文档对象名);        }    }}
布尔查询
@SpringBootTestpublic class MyTest{    //注入RestHighLevelClient对象    @Autowired    private RestHighLevelClient restHighLevelClient;    @Test    public void test() throws IOException {        //准备SearchRequest请求对象,并指定索引库名        SearchRequest searchRequest = new SearchRequest(索引库名);        //准备BoolQueryBuilder查询对象        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();        //在BoolQueryBuilder查询对象中添加TermQueryBuilder查询对象,must表示必须匹配且参与算分        boolQueryBuilder.must(QueryBuilders.termQuery(字段名, 搜索词));        //在BoolQueryBuilder查询对象中添加RangeQueryBuilder查询对象,filter表示必须匹配且不参与算分        boolQueryBuilder.filter(QueryBuilders.rangeQuery(字段名).gte(大于等于的值).lte(小于等于的值));        //在SearchRequest请求对象中放入BoolQueryBuilder查询对象        searchRequest.source().query(boolQueryBuilder);        //发送请求,得到响应对象        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);        //从响应对象中获取响应结果        SearchHits searchHits = searchResponse.getHits();        //获取文档的总条数        long total = searchHits.getTotalHits().value;        //获取搜索结果数组        SearchHit[] hits = searchHits.getHits();        //创建文档集合,用于存放结果        List<文档类名> 集合对象名 = new ArrayList<>();        //遍历数组        for (SearchHit hit : hits) {            //获取Json格式的文档内容            String json = hit.getSourceAsString();            //反序列化Json,这里需要引入fastjson的依赖            文档类名 文档对象名 = JSON.parseObject(json, 文档类名.class);            //将结果放入集合            集合对象名.add(文档对象名);        }    }}