0
点赞
收藏
分享

微信扫一扫

ES的操作

玉新行者 2022-03-30 阅读 74

es的一些操作:

1.es的一些操作

@Autowired.
private RestHighLevelClient restHighLevelClient.

删除一条索引下的所有数据

    DeleteByQueryRequest deleteByQueryRequest =
                                    new DeleteByQueryRequest();
    deleteByQueryRequest.setRefresh(true);
    BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
    //指定存在该索引下的字段
    boolQueryBuilder.must(QueryBuilders.existsQuery("taskId"));
    deleteByQueryRequest.setQuery(boolQueryBuilder);
    //索引
    deleteByQueryRequest.indices("hangzhou_hongwuyue_801");
    deleteByQueryRequest.types(EsDicIndexUtil.FULL_TEXT);
    restHighLevelClient.deleteByQuery(deleteByQueryRequest,
    RequestOptions.DEFAULT);

查询一条索引下的所有/部分数据

//创建Request
 SearchRequest searchRequest = new SearchRequest();
 searchRequest.types(EsDicIndexUtil.FULL_TEXT);
 //指定查询条件
 SearchSourceBuilder searchSourceBuilder = 
                                   new SearchSourceBuilder();
 //查询全部
 searchSourceBuilder.query(QueryBuilders.matchAllQuery());
 //查询部分
 searchSourceBuilder.query(QueryBuilders.matchQuery
                                      ("province", "黑龙江"));
  //查询部分(前缀查询)
 searchSourceBuilder.query(QueryBuilders.prefixQuery
                                            ("city", "杭州"));
  //查询部分(模糊查询,并指定前两个字不允许出错)
 searchSourceBuilder.query(QueryBuilders.fuzzyQuery
                    ("city", "杭州啦啦啦啦啦").prefixLength(2));
  //查询部分(类似Mysql中的like,在字符串中指定通配符* 和占位符?)
 searchSourceBuilder.query(QueryBuilders.
                                wildcardQuery("city", "杭*"));
  //查询范围(gt 大于  gte 大于等于  lt 小于  lte 小于等于)
  searchSourceBuilder.query(QueryBuilders.
                     rangeQuery("girlFriend").lte(10).gte(5));
  //查询(手写正则)
  searchSourceBuilder.query(QueryBuilders.
                        regexpQuery("iphone", "139[0-9]{8}"));

  BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
  //查询省份是杭州或黑龙江
  boolQueryBuilder.should(QueryBuilders.
                               termQuery("province", "杭州"));
  boolQueryBuilder.should(QueryBuilders.
                             termQuery("province", "黑龙江"));
  //查询不是男的
  boolQueryBuilder.mustNot(QueryBuilders.termQuery("xb", 1));
  //查询smsContent包含中国和平安
  boolQueryBuilder.must(QueryBuilders.matchQuery("smsContent", "中国"));
  boolQueryBuilder.must(QueryBuilders.matchQuery("smsContent", "平安"));
  //过滤
  boolQueryBuilder.filter(QueryBuilders.
                            termQuery("corpName", "河马先生"));
  boolQueryBuilder.filter(QueryBuilders.
                                    rangeQuery("fee").lte(5));
        
 searchSourceBuilder.query(boolQueryBuilder);
 searchRequest.source(searchSourceBuilder);
 //执行查询
 SearchResponse searchResponse = restHighLevelClient.
                search(searchRequest, RequestOptions.DEFAULT);

 SearchHits hits = searchResponse.getHits();

 hits.forEach(a -> {
 //操作数据
 });

举报

相关推荐

0 条评论