ElasticSearch - 如何获取当前日期和时间?

7

如何从 Elastic Search 获取当前日期和时间(最好使用 Java API)?

我已经搜索了很长时间,发现 Range Queries 可以执行某些日期字段的数学运算,也可以使用脚本字段,但是我找不到任何返回当前日期的脚本。我所要求的仅仅是类似 SQL 的 now() 函数。

感谢您的阅读。


你为什么需要那个?那是一个不寻常的请求。 - Andrei Stefan
我们正在进行应用程序集群,并且我需要确保所有集群在相同的日期和时间上运行。在使用常规数据库(及其日期/时间)的其他项目中,一切都正常运作。 - Sikor
这种类型的同步通常是在系统级别上完成的(使用ntp等),不是吗? - Val
确实,@Val所说的没错。你不需要Elasticsearch来告诉你这个。 - Andrei Stefan
好的,现在出于好奇(因为我有点惊讶我找不到任何东西),没有办法从弹性中获取当前时间吗? - Sikor
不,仅限于您目前发现的now()或在查询或聚合内部的Groovy/Painless脚本。 - Andrei Stefan
1个回答

8

在 Sense(您没有指定ES版本;这适用于2.3.2)中:

GET your_index/_search
{
  "size": 1, 
  "script_fields": {
    "now": {
      "script": "new Date().getTime()"
    }
  }
}

在Java API中,类似以下的代码(未经测试):
yourSearchRequestBuilder.addScriptField("now", "new Date().getTime()");

这确实需要在your_index中至少有一个文档,以便脚本字段有东西可以挂载; 这有点像黑客技巧。


2
实际上,在 Elastic 8.3.2 中,不需要在搜索中指定任何“your_index”。简单的“GET _search”也可以工作。 - ivosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接