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,不知道怎么實現多條件查詢,以此記錄。

后期補上前端代碼~~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM