ES常用查询条件与Mysql对比

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

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

1、等于号=

QueryBuilders.termQuery(“isDel”,1));

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

2、大于小于号

QueryBuilders.rangeQuery(“overdueStartTime”).lte(startDate.getTime())

//rangeQuery

//lte <=

//lt <

//gte >=

扫描二维码关注公众号,回复: 8781106 查看本文章

//gt >

3、or、and

boolQueryBuilder.must(QueryBuilders.termQuery(“isDel”,req.getIs_del()));

//must相当于and

caseStatusQuery.should(QueryBuilders.termQuery(“caseStatus”,s));

//should相当于or

4、in

QueryBuilders.termsQuery(“clientCompanyId”,req.getClientCompanyIdList())

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

5、like

QueryBuilders.wildcardQuery(“phone1”, “" + req.getTelephone() + "”)

//wildcard 正则匹配

QueryBuilders.matchPhraseQuery(“debtorName”, req.getDebtor_name())

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

6、sum&&count

AggregationBuilder debtTotalSum = AggregationBuilders.sum(DEBT_TOTAL_SUM_KEY).field(“debtTotal”);

AggregationBuilder debtTotalCount = AggregationBuilders.count(DEBT_TOTAL_COUNT_KEY).field(“debtTotal”);

7、order by and limit

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

.setTypes(ElasticSearchUtil.TYPE_NAME)

.setQuery(boolQueryBuilder)

//指定查询字段

.addStoredField(“id”)

.addSort(order, sortOrder)

//分页

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

.execute()

.actionGet();

8、批量插入

public void batchInsert(List list,Client client) {

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

BulkRequestBuilder bulkRequest = client.prepareBulk();

long start = System.currentTimeMillis();

BulkRequestBuilder delRequest = client.prepareBulk();

for (CaseTable caseTable :list){

IndexRequestBuilder ir = client.prepareIndex()

.setIndex(ElasticSearchUtil.INDEX_NAME_CASE)

.setType(ElasticSearchUtil.TYPE_NAME_CASE)

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

.setSource(JSON.toJSONString(caseTable));

bulkRequest.add(ir);

start = System.currentTimeMillis();

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

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

if (!bulkResponse.hasFailures()) {

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

}

}

发布了54 篇原创文章 · 获赞 28 · 访问量 4249

猜你喜欢

转载自blog.csdn.net/qq_37174887/article/details/100046114
今日推荐