求教ES查询优化

直接上代码:


        Client client = null;

        List<Map<String, String>> result = new ArrayList<>();
        try {
          client = ElasticSearchUtils.getInstance().getClient();
          long stime = DateUtil.stringToDate(startTime, DateUtil.yyyy_MM_dd_HHmmss).getTime();
          long ltime = DateUtil.stringToDate(lastTime, DateUtil.yyyy_MM_dd_HHmmss).getTime();

          // 查询数据
          SearchRequestBuilder requestBuilder = client.prepareSearch(SystemConstant.ES_INDEX).setTypes("BwOperateVoice")
              .setSearchType(SearchType.QUERY_AND_FETCH)
              .setQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("borrower_id", borrowerId))
                      .must(QueryBuilders.rangeQuery("call_time").from(stime).to(ltime)))
              .setScroll(TimeValue.timeValueMinutes(8))
              .setFrom(0).setSize(100).addSort("call_time", SortOrder.ASC);

          SearchResponse response = requestBuilder.get();

          long count = response.getHits().getTotalHits();// 总条数
          logger.info("====ES 查询BwOperateVoice条件borrower_id = {} AND call_time BETWEEN {} and {},查询结果:{}====",borrowerId,stime,ltime,count);
          result.addAll((getCallRecordByES(response.getHits())));
          while(response.getHits().getHits().length !=0) {
              response = client.prepareSearchScroll(response.getScrollId()).setScroll(TimeValue.timeValueMinutes(8)).execute().actionGet();
              result.addAll(getCallRecordByES(response.getHits()));
          }
        } catch (Exception e) {
          logger.info("------ES查询通话记录出现异常情况" + e.getMessage() + "-------");
          e.printStackTrace();
        }

以上代码while循环耗时10秒以上

[INFO][2018-09-11 09:03:09] com.waterelephant.operatorData.xjbk.service.impl.XjbkOperatorDataServiceImpl.queryCallRecordByES(XjbkOperatorDataServiceImpl.java:179) ====ES 查询BwOperateVoice条件borrower_id = 5886767 AND call_time BETWEEN 1522512000000 and 1525103999000,查询结果:1875====
[INFO][2018-09-11 09:03:21] com.waterelephant.operatorData.xjbk.service.impl.XjbkOperatorDataServiceImpl.getTelDataList(XjbkOperatorDataServiceImpl.java:132) —-根据borrowerId:5886767,startTime:2018-04-01 00:00:00,lastTime:2018-04-30 23:59:59,查询ES获取【现金白卡】通话记录信息,结果为:1875

求优化~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值