elasticsearch,elastic-stack,Java,Php,elasticsearch,Elastic Stack" /> elasticsearch,elastic-stack,Java,Php,elasticsearch,Elastic Stack" />

Java 如何计算今天和#x27;s日期和文档日期,但在弹性搜索脚本中消除时间

Java 如何计算今天和#x27;s日期和文档日期,但在弹性搜索脚本中消除时间,java,php,elasticsearch,elastic-stack,Java,Php,elasticsearch,Elastic Stack,我尝试了这个解决方案,它的工作,但它需要时间戳也…我想消除时间戳 "filter": { "script": { "script": { "inline":"(new Date().getTime() - doc['current_edd'].date.getMillis()) / (1000 * 60 * 60 * 24) == params.missDelby",

我尝试了这个解决方案,它的工作,但它需要时间戳也…我想消除时间戳

"filter": {
    "script": {
        "script": { 
            "inline":"(new Date().getTime() - doc['current_edd'].date.getMillis()) /
                            (1000 * 60 * 60 * 24)  == params.missDelby",
             "params": { "missDelby": 1 }
         }
     }
 }

Use可以使用一些数学来删除这个简单计算的时间部分

long t1 = new Date().getTime();
t1 -= t1 % (24 * 3600 * 1000); //24 * 3600 * 1000 total milliseconds in a day
您可以像这样更新查询

"filter": {
    "script": {
        "script": { 
            "inline": "long t1 = new Date().getTime(); 
                       long t2 = doc['PostCodeDate'].value.getMillis(); 
                       t1 -= t1 % (24 * 3600 * 1000); 
                       t2 -= t2 % (24 * 3600 * 1000);
                       return (t1 - t2) / (24 * 3600 * 1000) == params.missDelby",
             "params": { "missDelby": 1 }
         }
     }
}

一旦我找到一个更简单的方法,我会立即更新我的解决方案。

你的意思是什么,我想消除时间戳,你的查询的预期结果是什么?所以我的意思是,我想找出两个日期之间的天数。。。但问题是我的值是yyyy-mm-dd HH:mm:ss格式。。。因此,我想在获取记录时从日期中删除HH:mm:ss,并计算从现在起的确切天数()&doc['dateval']。我希望您理解我的观点……我想找到一种删除或重置时间的方法,即HH:mm:ss,然后获得日期之间的日差,如sql的datediff()函数。你想从日期中删除时间部分,2019-12-04 11:00:00和2019-12-05 01:00:00之间的差值是1天??是的,你说得对……我只想在计算过程中减去日期并消除时间……我很难找到解决方案……我的弹性版本是5,我想在脚本标签中这样做……我在弹性搜索中尝试了这个方法,但我不明白你为什么在返回语句中添加+1。请解释一下。@AshaLodhi这是个错误,我认为在2019-12-05和2019-12-06之间有2天,但在你的情况下只有1天。我修正了它感谢更新…让我知道是否有更优雅的方式做同样的事。非常感谢!