ElasticSearch return the required data query and more conditions are met

demand:

 

 Java back-end code:

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());
        }
    }

Beginner es, do not know how to achieve multi-criteria query, this record.

Late fill the front-end code ~ ~ ~ ~

Guess you like

Origin www.cnblogs.com/must-grow/p/12109331.html