1 实体类写入ES
为桂东等地区用户提供了全套网页设计制作服务,及桂东网站建设行业解决方案。主营业务为成都做网站、网站建设、桂东网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!在写入ES库的时候,日期格式需要转换成ES可以识别的日期格式:
yyyy/MM/dd HH:mm:ss
然后写入ES库即可
一般是根据时间区间查询,所以如果有空字段可以设置一个默认值方便查询
//如果结束时间为空 手动设置成2099年12月31号为结束时间
if(ObjectUtil.isEmpty(esMedList.getEnddate())){
esMedList.setEnddate(DateUtil.parseDate("2099-12-31"));
}
IndexRequest request = new IndexRequest(indexName);
request.id(esMedList.getMedListCodg());
request.type("_doc");
request.source(JSONObject.toJSONString(esMedList), XContentType.JSON);
request.opType(DocWriteRequest.OpType.CREATE);
bulkProcessor.add(request);
2 查询ES数据的时候
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.filter(QueryBuilders.rangeQuery("begndate")
.to(DateUtil.format(feeOccuTime,dateFormat)));
queryBuilder.filter(QueryBuilders.rangeQuery("enddate").from(DateUtil.format(feeOccuTime,dateFormat)));
queryBuilder.must(QueryBuilders.matchQuery("drugProdname", drugProdname));
if(chrgitmLv!=null){
queryBuilder.filter(QueryBuilders.termQuery("chrgitmLv", chrgitmLv));
}
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
ES的一些搜索规则:
//4设置搜索规则
//4.1QueryBuilders.matchAllQuery() 查询全部数据
searchSourceBuilder .query(QueryBuilders.matchAllQuery());
//4.2 QueryBuilders.termQuery :对搜索关键字不分词进行查询 精准查询
searchSourceBuilder.query(QueryBuilders.termQuery("name","张三"));
//4.2.1 termsQuery: 精准查询,一次匹配多个数据
searchSourceBuilder.query(QueryBuilders.termsQuery("id","25","24"));
//4.3 QueryBuilders.matchQuery(). 关键字分词进行查询
searchSourceBuilder.query(QueryBuilders.matchQuery("courseName","分布式课程入门").operator(Operator.AND));
//4.3.1 QueryBuilders.multiMatchQuery() 关键字匹配多个字段,可以给某一个字段设置 权重,提升的倍数。
searchSourceBuilder.query(QueryBuilders.multiMatchQuery("分布式OK", "courseName", "courseDescription").field("courseName", 10));
//4.4 时间范围搜索 .from(起始时间).to(结束时间)
searchSourceBuilder.query(QueryBuilders.must(QueryBuilders.rangeQuery("commentTime").from("2022-01-02 13:11:00").to("2022-01-02 14:11:00")));
//4.5 QueryBuilders.rangeQuery 范围查询 gte 大于等于 lte 小于等于
searchSourceBuilder.query(QueryBuilders.rangeQuery("pay").gte(1000).lte(2000));
参考:
JAVA代码实现ElasticSearch搜索(入门-进阶)(一):搜索方法、多字段查询、高亮展示_majunssz的博客-博客
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧