回覆列表
  • 1 # 使用者5329335765427

    用2個Map作為傳參,一個是must,一個是should。程式碼如下:

    //建立查詢

    SearchRequestBuilder srb = client.prepareSearch(INDEX);

    srb.setTypes(ASK_TYPE);

    srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);

    //分頁

    srb.setFrom((pageNo - 1) * pageSize).setSize(pageSize);

    //按時間倒序

    SortBuilder sortBuilder = SortBuilders.fieldSort("date").order(SortOrder.DESC);

    srb.addAggregation(aggregation);//聚合

    srb.addSort(sortBuilder);//排序

    /**********************主要看這裡 start*********************************/

    if(null != mustMap && mustMap.size() > 0){

    //建立一個查詢

    BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();

    //這裡查詢的條件用map傳遞

    for(String key : mustMap.keySet()){

    queryBuilder.must(QueryBuilders.termQuery(key,mustMap.get(key)));

    }

    //這裡查詢的條件用map傳遞

    for(String key : shouldMap.keySet()){

    queryBuilder.should(QueryBuilders.termQuery(key,mustMap.get(key)));

    }

    //查詢

    srb.setQuery(queryBuilder);

    }

    /**********************主要看這裡 end*********************************/

    //請求

    SearchResponse response = srb.get();

    //更多看這裡:http://www.sojson.com/tag_elasticsearch.html

  • 中秋節和大豐收的關聯?
  • 如何看待2019總決賽猛龍與勇士的第一場比賽,目前已取勝?