【ElasticSearch实战】——ES常用查询条件与mysql对比

类比mysql,我们需要=、>、>=、<、<= 、or、and、in、like、count、sum、group by、order by、limit 

在高版本的ES里面使用了boolquery替换了filter

 

1、等于号=

 
  1. QueryBuilders.termQuery("isDel",1));

  2. //termQuery相当于=,相当于isDel=1

2、大于小于号

 
  1. QueryBuilders.rangeQuery("overdueStartTime").lte(startDate.getTime())

  2. //rangeQuery

  3. //lte <=

  4. //lt <

  5. //gte >=

  6. //gt >

3、or、and

 
  1. boolQueryBuilder.must(QueryBuilders.termQuery("isDel",req.getIs_del()));

  2. //must相当于and

  3. caseStatusQuery.should(QueryBuilders.termQuery("caseStatus",s));

  4. //should相当于or

4、in

 
  1. QueryBuilders.termsQuery("clientCompanyId",req.getClientCompanyIdList())

  2. //termQuery相当于in,可以传递list

5、like

 
  1. QueryBuilders.wildcardQuery("phone1", "*" + req.getTelephone() + "*")

  2. //wildcard 正则匹配

  3.  
  4. QueryBuilders.matchPhraseQuery("debtorName", req.getDebtor_name())

  5. //matchPhrase 不会分词,直接匹配有完整相关短语的记录

6、sum&&count

 
  1. AggregationBuilder debtTotalSum = AggregationBuilders.sum(DEBT_TOTAL_SUM_KEY).field("debtTotal");

  2.  
  3. AggregationBuilder debtTotalCount = AggregationBuilders.count(DEBT_TOTAL_COUNT_KEY).field("debtTotal");

7、order by and limit

 
  1. SearchResponse searchResponse = client.prepareSearch(ElasticSearchUtil.getIndexName())

  2. .setTypes(ElasticSearchUtil.TYPE_NAME)

  3. .setQuery(boolQueryBuilder)

  4. //指定查询字段

  5. .addStoredField("id")

  6. .addSort(order, sortOrder)

  7. //分页

  8. .setFrom((currentPage - 1) * limit).setSize(limit)

  9. .execute()

  10. .actionGet();

8、批量插入

 
  1. public void batchInsert(List<CaseTable> list,Client client) {

  2. LOGGER.info("---------案件批量插入索引开始--------");

  3. BulkRequestBuilder bulkRequest = client.prepareBulk();

  4. long start = System.currentTimeMillis();

  5. BulkRequestBuilder delRequest = client.prepareBulk();

  6.  
  7. for (CaseTable caseTable :list){

  8. IndexRequestBuilder ir = client.prepareIndex()

  9. .setIndex(ElasticSearchUtil.INDEX_NAME_CASE)

  10. .setType(ElasticSearchUtil.TYPE_NAME_CASE)

  11. .setId(caseTable.getId().toString())

  12. .setSource(JSON.toJSONString(caseTable));

  13. bulkRequest.add(ir);

  14.  
  15. start = System.currentTimeMillis();

  16. BulkResponse bulkResponse = bulkRequest.execute().actionGet();

  17. LOGGER.info("案件批量插入循环所用时间 search time:{}ms", System.currentTimeMillis() - start);

  18. if (!bulkResponse.hasFailures()) {

  19. LOGGER.info("----------案件批量插入成功一轮------------");

  20. }

  21. }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值