我在elasticsearch中向索引添加一些测试数据,有没有什么方法可以直接将时间戳字段设置为“NOW“,并进行一些简单的计算。
我在其他上下文中可以使用类似{{_ingest.timestamp}}的内容,但以下内容不起作用
发布我的索引/_doc {"@时间戳”:“{{摄取时间戳}}"}
此外,“现在”在发布my-index/_doc {"@timestamp”:“现在”}后不起作用
理想情况下,希望使用post my-index/_doc {"@timestamp”:“now”}之类的命令快速添加文档
发布我的索引/_doc {"@timestamp”:“现在+1m”}
发布我的索引/_doc {"@timestamp”:“现在+2m”}
是否可以在不使用摄取管道的情况下完成此操作?
1条答案
按热度按时间dojqjjoe1#
摄取管道非常方便,因为它们允许您修改源文档的内容,方法是添加一个带有动态值(如
{{_ingest.timestamp}}
)的新@timestamp
字段。但是,如果您不想使用摄取管道,还有另一种方法可以使用runtime fields和Map脚本。
在Map中,需要使用一个脚本定义
@timestamp
日期字段,该脚本将在文档被索引时计算字段的值:注意,在脚本中,您可以自由地应用任何逻辑来存储
now+1
、now+2
等然后,您可以像往常一样为文档编制索引,但不必指定
@timestamp
字段:在运行搜索时,可以检索动态创建的
@timestamp
字段的值,如下所示:这里最大的区别是运行时字段是动态创建和索引的,并存储为一个单独的字段,但是**您的源文档不会像摄取管道那样被修改。