模拟mysql,我们需要=,\ =,\ lt;,\ lt; =,或,和,以点,计数,总和,分组依据,排序依据,限制
在更高版本的ES中,使用Boolquery代替了筛选器
1,等号=
QueryBuilders.termQuery(” isDel”,1));
//termQuery等效于=,等效于isDel = 1
2.大于或小于符号
QueryBuilders.rangeQuery(” overdueStartTime”)。 LTE(startDate.getTime())
//rangeQuery
//lte \ lt; =
//lt \ lt;
//gte \ gt; =
//gt \ gt;
3,或,和
boolQueryBuilder.must(QueryBuilders.termQuery(” isDel”,req.getIs_del()));
//必须等于
caseStatusQuery.should(QueryBuilders.termQuery(” caseStatus”,s));
//应该等于或
4,在
QueryBuilders.termsQuery(” clientCompanyId”,req.getClientCompanyIdList())
//termQuery等效于in,您可以传递列表
5,就像
QueryBuilders.wildcardQuery(” phone1″,” ” + req.getTelephone()+” “)
//通配符常规匹配
QueryBuilders.matchPhraseQuery(” debtorName”,req.getDebtor_name())
//matchPhrase不会分割单词,而是直接匹配具有完整相关短语的记录
6,总和\ \计数
AggregationBuilder bondTotalSum = AggregationBuilders.sum(DEBT_TOTAL_SUM_KEY).field(” debtTotal”);
AggregationBuilderbtrTotalCount = AggregationBuilders.count(DEBT_TOTAL_COUNT_KEY).field(” debtTotal”);
7,排序和限制
SearchResponse searchResponse = client.prepareSearch(ElasticSearchUtil.getIndexName())
.setTypes(ElasticSearchUtil.TYPE_NAME)
.setQuery(boolQueryBuilder)
//指定查询字段
.addStoredField(” id”)
.addSort(order,sortOrder)
//分页
.setFrom(((currentPage-1)*限制).setSize(限制)
.execute()
.actionGet();
8,批量插入
public void batchInsert(列表列表,客户端客户端){
LOGGER.info(”———案例的批处理插入索引的开始——–“);
BulkRequestBuilder bulkRequest = client.prepareBulk();
长启动= 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(”案例批量插入周期搜索时间:{} ms”,System.currentTimeMillis()-开始);
if(!bulkResponse.hasFailures()){
LOGGER.info(”———-成功批量插入案例————“);
}
}