• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

ES根据日期查询数据

武飞扬头像
oIMcoin
帮助1

1 实体类写入ES

在写入ES库的时候,日期格式需要转换成ES可以识别的日期格式:

yyyy/MM/dd HH:mm:ss

然后写入ES库即可

一般是根据时间区间查询,所以如果有空字段可以设置一个默认值方便查询

  1.  
    //如果结束时间为空 手动设置成2099年12月31号为结束时间
  2.  
    if(ObjectUtil.isEmpty(esMedList.getEnddate())){
  3.  
    esMedList.setEnddate(DateUtil.parseDate("2099-12-31"));
  4.  
    }
  5.  
    IndexRequest request = new IndexRequest(indexName);
  6.  
    request.id(esMedList.getMedListCodg());
  7.  
    request.type("_doc");
  8.  
    request.source(JSONObject.toJSONString(esMedList), XContentType.JSON);
  9.  
    request.opType(DocWriteRequest.OpType.CREATE);
  10.  
    bulkProcessor.add(request);

 2 查询ES数据的时候

  1.  
    BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
  2.  
    queryBuilder.filter(QueryBuilders.rangeQuery("begndate")
  3.  
    .to(DateUtil.format(feeOccuTime,dateFormat)));
  4.  
    queryBuilder.filter(QueryBuilders.rangeQuery("enddate").from(DateUtil.format(feeOccuTime,dateFormat)));
  5.  
    queryBuilder.must(QueryBuilders.matchQuery("drugProdname", drugProdname));
  6.  
     
  7.  
    if(chrgitmLv!=null){
  8.  
    queryBuilder.filter(QueryBuilders.termQuery("chrgitmLv", chrgitmLv));
  9.  
    }
  10.  
     
  11.  
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  12.  
    searchSourceBuilder.query(queryBuilder);

ES的一些搜索规则:

  1.  
    //4设置搜索规则
  2.  
    //4.1QueryBuilders.matchAllQuery() 查询全部数据
  3.  
    searchSourceBuilder .query(QueryBuilders.matchAllQuery());
  4.  
    //4.2 QueryBuilders.termQuery :对搜索关键字不分词进行查询 精准查询
  5.  
    searchSourceBuilder.query(QueryBuilders.termQuery("name","张三"));
  6.  
    //4.2.1 termsQuery: 精准查询,一次匹配多个数据
  7.  
    searchSourceBuilder.query(QueryBuilders.termsQuery("id","25","24"));
  8.  
    //4.3 QueryBuilders.matchQuery(). 关键字分词进行查询
  9.  
    searchSourceBuilder.query(QueryBuilders.matchQuery("courseName","分布式课程入门").operator(Operator.AND));
  10.  
    //4.3.1 QueryBuilders.multiMatchQuery() 关键字匹配多个字段,可以给某一个字段设置 权重,提升的倍数。
  11.  
    searchSourceBuilder.query(QueryBuilders.multiMatchQuery("分布式OK", "courseName", "courseDescription").field("courseName", 10));
  12.  
    //4.4 时间范围搜索 .from(起始时间).to(结束时间)
  13.  
    searchSourceBuilder.query(QueryBuilders.must(QueryBuilders.rangeQuery("commentTime").from("2022-01-02 13:11:00").to("2022-01-02 14:11:00")));
  14.  
    //4.5 QueryBuilders.rangeQuery 范围查询 gte 大于等于 lte 小于等于
  15.  
    searchSourceBuilder.query(QueryBuilders.rangeQuery("pay").gte(1000).lte(2000));
学新通

参考:

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgaahke
系列文章
更多 icon
同类精品
更多 icon
继续加载