ES根据日期查询数据
生活随笔
收集整理的這篇文章主要介紹了
ES根据日期查询数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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的博客-CSDN博客
總結
以上是生活随笔為你收集整理的ES根据日期查询数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java paho_Java Eclip
- 下一篇: NYOJ 19 擅长排列的小名 next