elasticsearch 5.x java doc

    //查询
    String index = "客户表_"+公司ID;//es  索引
    String type = "good"; //es  type

    //查询组装
    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
    //简单查询
    // 等于
    boolQueryBuilder.must(QueryBuilders.termQuery(fieldName, value));
    // 多个值
    boolQueryBuilder.must(QueryBuilders.termsQuery(fieldName, value));
    // 不等于
    boolQueryBuilder.mustNot(QueryBuilders.termQuery(fieldName, value));
    // 包含
    boolQueryBuilder.must(QueryBuilders.wildcardQuery(fieldName, "*" + value + "*"));
    // 不包含
    boolQueryBuilder.mustNot(QueryBuilders.wildcardQuery(fieldName, "*" + value + "*"));
    // 有值
    boolQueryBuilder.must(QueryBuilders.existsQuery(fieldName));
    // 没有值
    boolQueryBuilder.mustNot(QueryBuilders.existsQuery(fieldName));
    // 数字范围
    boolQueryBuilder.must(QueryBuilders.rangeQuery(fieldName).gt(dateStart).lt(dateEnd));
    // 日期
    // 绝对时间
    boolQueryBuilder.must(QueryBuilders.rangeQuery(fieldName).format("yyyy-MM-dd").timeZone("+08:00").gte(dateStart).lte(dateEnd));
    //查询复杂条件
    boolQueryBuilder.must(QueryBuilders.nestedQuery("even", QueryBuilders.termQuery("even.111", 222), ScoreMode.None));
   //has_child:基于子文档的内容,查找父文档
    boolQueryBuilder.must(JoinQueryBuilders.hasChildQuery("type",QueryBuilders.termQuery("openid","111"), ScoreMode.None));
    boolQueryBuilder.must(QueryBuilders.termQuery("mobile","186666666"));

    System.out.println("has_child:基于子文档的内容,查找父文档"+boolQueryBuilder);

    //has_child:基于子文档的内容,查找父文档
    boolQueryBuilder.must(JoinQueryBuilders.hasParentQuery(index,QueryBuilders.termsQuery("mobile","186666666"),true));
    boolQueryBuilder.must(QueryBuilders.termQuery("openid","111"));

    SearchResponse searchResponse = client.prepareSearch(index)
        .setTypes(type)
        .setQuery(boolQueryBuilder)
        .addSort(SortBuilders.fieldSort("_doc"))
        .setSize(10000)
        // 这个游标维持多长时间
        .setScroll(TimeValue.timeValueMinutes(15)).execute().actionGet();
    // 发送量
   Long count = searchResponse.getHits().getTotalHits();

    for (SearchHit hit : searchResponse.getHits()) {
        System.out.println(hit.getId());    //_id
        System.out.println(hit.getSource());//数据
    }


    Map<String,Object> map = new HashMap();
    map.put("name","张三");
    //单条新增
    IndexRequestBuilder indexRequestBuilder = client.prepareIndex(index,"event_two");
    indexRequestBuilder.setSource(map);
    indexRequestBuilder.setId("222222222");
    indexRequestBuilder.execute();


    //单条修改
    UpdateRequestBuilder requestBuilder =   client.prepareUpdate(index,type,"AWReEq5GvJs95AmUKpif");
    requestBuilder.setDoc(map);
    requestBuilder.execute();


   //父子级别新增
   IndexRequestBuilder indexRequestBuilder = client.prepareIndex(index,type);
   indexRequestBuilder.setSource(map);
   indexRequestBuilder.setParent("222222222");
   indexRequestBuilder.setId("222222222");
   indexRequestBuilder.execute();


   //父子集修改
   UpdateRequestBuilder requestBuilder =   client.prepareUpdate(index,type,"AWReEq5GvJs95AmUKpif");
   requestBuilder.setDoc(map);
   requestBuilder.setParent("222222222");
   requestBuilder.execute();


  批量增加
   String index = "客户表_"+公司ID;//es  索引
   String type = "good"; //es  type
  //获取默认组
  BulkRequestBuilder EsBulkRequest = client.prepareBulk();

    //同步es
  IndexRequestBuilder indexRequestBuilder = client.prepareIndex(index,type);
  indexRequestBuilder.setSource(map).setId(uuid.toString());
  EsBulkRequest.add(indexRequestBuilder);

  UpdateRequestBuilder updateBuilder = client.prepareUpdate(index,type,"_id");
                  updateBuilder.setDoc(map);
                  EsBulkRequest.add(updateBuilder);

  //保存
    if (EsBulkRequest.numberOfActions()!= 0){
           bulkWriteOperation.execute();
           EsBulkRequest.execute();
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值