首页 > 解决方案 > ElasticSearch 脚本获取当前年份的值

问题描述

我正在尝试在我的 rescore 函数中创建一个脚本,以检查书目发布日期(doc['bibliografische_verschijningsdatum'])是否与商业发布日期(doc['verschijningsdatum'])相同。

和 doc['verschijningsjaar'].value == new Date.getYear()

我怎样才能无痛地获得今天日期的年份?

"script_score": {
          "script": "((doc['verschijningsdatum'] == doc['bibliografische_verschijningsdatum']) && (doc['verschijningsjaar'].value == new Date().getYear()) ? 1 : 0)"
        }
      }

标签: dateelasticsearchelasticsearch-painless

解决方案


您的问题已在弹性论坛上提出。至少来自弹性团队的一名成员的官方回答如下(重点是我的):

Painless 故意没有任何访问 now 样式变量的权限,因此可以更好地缓存它们。当前的建议是让您现在通过脚本 params 发送样式变量

顺便说一句,您应该知道此查询根本无法利用索引。它必须为每个文档加载 @timestamp 字段并进行比较。这比在摄取时提取星期几并将其添加到文档中要慢得多。


推荐阅读