【问题标题】:Date Difference with Groovy Script Elastic SearchGroovy 脚本弹性搜索的日期差异
【发布时间】:2016-08-12 15:52:58
【问题描述】:

我正在尝试使用以下代码基于内联 Groovy 脚本创建排序。

基本上尝试用当前时间减去一个日期字段并使用返回的差异对其进行排序。

"sort": [
    {
      "_script": {
        "script": "DateTime date = new DateTime(doc['enddate'].value); return date.minus(date , '2016-08-12T12:24:03');",
        "type": "number",
        "order": "asc"
      }
    }]

但是这种方法是不正确的。

【问题讨论】:

    标签: elasticsearch groovy


    【解决方案1】:

    你可以试试这个

    {
      "sort": [
        {
          "_script": {
            "script": "DateTime.now().millis - doc.enddate.date.millis",
            "type": "number",
            "order": "asc"
          }
        }
      ]
    }
    

    【讨论】:

    • 您好,谢谢,收到以下错误:“类型”:“script_exception”,“原因”:“无法运行内联脚本 [DateTime.now().date.millis - doc.enddate.date .millis] 使用 lang [groovy]"
    • 你需要确保enable dynamic scripting并重启ES
    • 太棒了,很高兴它有帮助!
    • 我按照要求使用了desc逻辑
    • 但是我有几个日期的日期值为 1800-01-01T00:00:00 我希望这是最后一个,为了测试目的,我只是尝试了这样的事情,你能建议更好的方法? "script": "if(new DateTime(doc['enddate'].date).year == 1800){return -500000000000000; } else {DateTime.now().millis - new DateTime(doc['enddate'].date).millis}"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多