elasticsearch RangeFilter实例-实现时间范围过滤

需求:我们搜索文章范围在近一年之内。这时候我们就用到elasticsearch RangeFilter了
具体例子如下:

long current=System.currentTimeMillis()/1000l;
	    Calendar ca = Calendar.getInstance();//得到一个Calendar的实例  
	    ca.setTime(new Date());   //设置时间为当前时间  
	    ca.add(Calendar.YEAR, -1); //年份减1  
	    Date lastYear = ca.getTime(); 
 
	 QueryStringQueryBuilder queryBuilder = new QueryStringQueryBuilder("中国经济");
        queryBuilder.analyzer("ik").field("title");    
 
        FilteredQueryBuilder query = QueryBuilders.filteredQuery(
      		  queryBuilder, 
                FilterBuilders.boolFilter()
                .must(FilterBuilders.rangeFilter("updatetime").from(lastYear.getTime()/1000l).to(current)));

经测试,以上方式用于时间不行,其实直接用时间来进行计算就可以了:

如果updatetime在数据库里或在创建索引的时候是以Date格式保存的.那么直接可以这样写:

 FilteredQueryBuilder query = QueryBuilders.filteredQuery(
      		  queryBuilder, 
                FilterBuilders.boolFilter()
                .must(FilterBuilders.rangeFilter("updatetime").from(otherDate).to(new Date())));

otherDate就是指一个时间 类型为java.util.Date

转载于:https://my.oschina.net/ydsakyclguozi/blog/512731

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值