ElasticSearch查询多条件同时满足时返回所需数据

需求:

 Java后端代码:

public R query(@RequestParam(name = "app_id") Long appId,
                        @RequestParam(name = "channel_id") Long channelId,
                        @RequestParam(name = "country") String country,
                        @RequestParam(name = "date") String date){
        SearchRequest searchRequest = new SearchRequest("peo_publisher_report");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        if (appId != null){
            boolQuery.must(QueryBuilders.matchQuery("app_id", appId));
        }
        if (channelId != null){
            boolQuery.must(QueryBuilders.matchQuery("channel_id", channelId));
        }
        if (country != null){
            boolQuery.must(QueryBuilders.matchQuery("country", country));
        }
        SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd");
        if (date != null){
            try {
                boolQuery.must(QueryBuilders.rangeQuery("statistical_time").from(format.parse(date).getTime()).to(new Date().getTime()));
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        searchSourceBuilder.query(boolQuery);
        searchRequest.source(searchSourceBuilder);
        try {
            SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
            return R.ok().put("data",search.toString());
        } catch (IOException e) {
            e.printStackTrace();
            return R.error().put("error",e.getMessage());
        }
    }

初学es,不知道怎么实现多条件查询,以此记录。

后期补上前端代码~~~~

猜你喜欢

转载自www.cnblogs.com/must-grow/p/12109331.html