ES如果想进行两个字段大小比较作为查询条件,需要使用script。
即 ES Scripting。
参照ES 6.4 手册
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
1.ES中Date型字段不能直接用>,<,+,-进行比较和计算,会报错。
可以先把Date类型取得getMillis(),取得时间戳,然后就可以进行比较了。
使用TransportClient代码如下,param是传入的参数,可以在script中使用
Map<String, Object> params = Maps.newHashMap();
params.put("datesub", 5);
QueryBuilder qb = QueryBuilders.boolQuery()
.must(QueryBuilders.scriptQuery(
new Script(Script.DEFAULT_SCRIPT_TYPE,
Script.DEFAULT_SCRIPT_LANG,
"doc['updated_time'].value.getMillis() - doc['create_time'].value.getMillis() < params.datesub",
params)));
2.script取得当前日期
“”new Date().getTime() “”