
@Testpublic void t15() throws IOException {DeleteByQueryRequest request = new DeleteByQueryRequest(index);request.types(type);// 删除查询到到数据request.setQuery(QueryBuilders.rangeQuery("fee").lt(5));BulkByScrollResponse bulkByScrollResponse = ESUtils.getClient().deleteByQuery(request, RequestOptions.DEFAULT);System.out.println(bulkByScrollResponse);}@Testpublic void t16() throws IOException {// 复合查询BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();// should 表示 OrboolQueryBuilder.should(QueryBuilders.termQuery("province", "武汉"));boolQueryBuilder.should(QueryBuilders.termQuery("province", "北京"));// 不是boolQueryBuilder.mustNot(QueryBuilders.termQuery("operatorId","2"));SearchSourceBuilder builder = new SearchSourceBuilder();builder.query(boolQueryBuilder);SearchRequest request = new SearchRequest(index);request.types(type);request.source(builder);SearchResponse search = ESUtils.getClient().search(request, RequestOptions.DEFAULT);System.out.println(search.getHits().getHits().length);// 结果for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}@Testpublic void t17() throws IOException {// boosting 查询可以帮助我们去影响查询后的 score; negativeBoost,指定系数,必须小于1.0BoostingQueryBuilder boostingQueryBuilder = QueryBuilders.boostingQuery(QueryBuilders.matchQuery("smsContent", "先生"),QueryBuilders.matchQuery("smsContent", "李四")).negativeBoost(0.2f);SearchSourceBuilder builder = new SearchSourceBuilder();builder.query(boostingQueryBuilder);SearchRequest request = new SearchRequest(index);request.types(type);request.source(builder);SearchResponse search = ESUtils.getClient().search(request, RequestOptions.DEFAULT);System.out.println(search.getHits().getHits().length);// 结果for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}@Testpublic void t18() throws IOException {// filter, andBoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();boolQueryBuilder.filter(QueryBuilders.matchQuery("smsContent", "先生"));boolQueryBuilder.filter(QueryBuilders.termQuery("province", "武汉"));SearchSourceBuilder builder = new SearchSourceBuilder();builder.query(boolQueryBuilder);SearchRequest request = new SearchRequest(index);request.types(type);request.source(builder);SearchResponse search = ESUtils.getClient().search(request, RequestOptions.DEFAULT);System.out.println(search.getHits().getHits().length);// 结果for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}@Testpublic void t19() throws IOException {// 高亮HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.field("smsContent");// 指定高亮数据展示多少个字符回来highlightBuilder.fragmentSize(20);highlightBuilder.preTags("<font color='green'>");highlightBuilder.postTags("</font>");SearchSourceBuilder builder = new SearchSourceBuilder();builder.query(QueryBuilders.matchQuery("smsContent", "中国"));builder.highlighter(highlightBuilder);SearchRequest request = new SearchRequest(index);request.types(type);request.source(builder);SearchResponse search = ESUtils.getClient().search(request, RequestOptions.DEFAULT);System.out.println(search.getHits().getHits().length);// 结果for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());Map<String, HighlightField> highlightFields = hit.getHighlightFields();HighlightField highlightField = highlightFields.get("smsContent");System.out.println(highlightField);}}@Testpublic void t20() throws IOException {SearchSourceBuilder builder = new SearchSourceBuilder();// 去重计数builder.aggregation(AggregationBuilders.cardinality("agg").field("province"));SearchRequest request = new SearchRequest(index);request.types(type);request.source(builder);SearchResponse search = ESUtils.getClient().search(request, RequestOptions.DEFAULT);Aggregations aggregations = search.getAggregations();Cardinality agg = aggregations.get("agg");System.out.println(agg.getValue());System.out.println(search.getHits().getHits().length);// 结果for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}@Testpublic void t21() throws IOException {// 范围计数, 某个值在范围内出现次数RangeAggregationBuilder field = AggregationBuilders.range("agg").field("fee");// 3 - 5之间,不包含field.addRange(3, 5);// 大于等于5field.addUnboundedFrom(5);// 小于等于3field.addUnboundedTo(3);SearchSourceBuilder builder = new SearchSourceBuilder();builder.aggregation(field);SearchRequest request = new SearchRequest(index);request.types(type);request.source(builder);SearchResponse search = ESUtils.getClient().search(request, RequestOptions.DEFAULT);Aggregations aggregations = search.getAggregations();Range agg = aggregations.get("agg");List<? extends Range.Bucket> buckets = agg.getBuckets();for (Range.Bucket bucket : buckets) {System.out.println("-- --");System.out.println(bucket.getFrom());System.out.println(bucket.getTo());System.out.println(bucket.getKeyAsString());System.out.println("计数为:" + bucket.getDocCount());System.out.println("-- --");}System.out.println(search.getHits().getHits().length);// 结果for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}@Testpublic void t22() throws IOException {//聚合函数, 最大最小 平均 和SearchSourceBuilder builder = new SearchSourceBuilder();builder.aggregation(AggregationBuilders.extendedStats("agg").field("fee"));SearchRequest request = new SearchRequest(index);request.types(type);request.source(builder);SearchResponse search = ESUtils.getClient().search(request, RequestOptions.DEFAULT);Aggregations aggregations = search.getAggregations();ExtendedStats agg = aggregations.get("agg");System.out.println(agg.getMax());System.out.println(agg.getMinAsString());System.out.println("平均: " + agg.getAvg());System.out.println(agg.getSum());System.out.println("平方和: " + agg.getSumOfSquares());System.out.println(search.getHits().getHits().length);// 结果for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}@Testpublic void t23() throws IOException {// 地图检索// geo_distance 点 半径 圆// geo_bounding_box 以两个点确定一个矩形,获取在矩形内的全部数据// geo_polygon 以多个点,确定一个多边形,获取多边形内的全部数据SearchSourceBuilder builder = new SearchSourceBuilder();List<GeoPoint> objects = new ArrayList<>();objects.add(new GeoPoint(39.99878,116.298916));objects.add(new GeoPoint(39.972576,116.29561));objects.add(new GeoPoint(39.984739,116.327661));builder.query(QueryBuilders.geoPolygonQuery("location", objects));SearchRequest request = new SearchRequest(index);request.types(type);request.source(builder);SearchResponse search = ESUtils.getClient().search(request, RequestOptions.DEFAULT);System.out.println(search.getHits().getHits().length);// 结果for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}
文章转载自java小小小小栈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




