Elasticsearch:如何在写入文档时加上 now 时间标签

我最近由于需要需要像一个索引里写入一个文档,而且里面的时间标签 @timestamp 需要用到当前的时间。在文档里,我们没有项 now 这样的东西可以使用来表示当前的时间。那么我们该怎么办呢?

 

首先我们创建一个这样的 pipeline:

PUT _ingest/pipeline/add-timestamp
{
  "processors": [
    {
      "set": {
        "field": "@timestamp",
        "value": "{{_ingest.timestamp}}"
      }
    }
  ]
}

在这里,我们使用 add-timestamp  这个 pipeline 来添加一个叫做 @timestamp 的字段。它的时间由 _ingest.timestamp 来指定。

我们接下来使用如下的命令来向一个索引添加一个文档:

PUT /test/_doc/1?pipeline=add-timestamp
{
  "content": "good"
}

在这里,我们使用 add-timestamp 来添加一个 @timestamp 的字段。运行上面的命令后,我们使用如下的命令来查询:

{
  "_index" : "test",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "@timestamp" : "2020-08-08T14:33:23.372112Z",
    "content" : "good"
  }
}

从上面我们可以看出来在文档中,它添加了一个新的字段 @timestamp,而且它的时间是我们当前的电脑的时间。