Как автоматически преобразовать значение @timestamp в документ эластичного поиска 7? - PullRequest
0 голосов
/ 23 октября 2019

У меня возникли проблемы с настройкойasticsearch 7 version. Моя цель - автоматически создать значение поля @timestamp после создания нового документа в ES.

Я нашел ответ на аналогичный вопрос. но это не может быть решением, потому что это другая версия.

Я пытался _default_ объект в mappings объект. Но, похоже, он больше не обеспечивает в версии ES 7.

"_default_":{
 "_timestamp" : {
   "enabled" : true,
   "store" : true
 }
}

И я хочу сделать значение @timestamp в этом случае.

PUT /locations
{
   "mappings": {
         "properties": {
            "location": {
               "type": "geo_point"
            },
            "id": {
              "type": "text"
            }
        }
   }
}
PUT /locations/_doc/1
{
  "location" : "31.387593,121.123446",
  "id" : "xxxxxxxxxxxxxxxxxxxxxx"
}

ожидаемый результат:

{
 @timestamp : "2019-10-23 10:23:50",
 "location" : "31.387593,121.123446",
 "id" : "xxxxxxxxxxxxxxxxxxxxxx"
}

1 Ответ

2 голосов
/ 23 октября 2019

Вы можете создать конвейер загрузки

PUT _ingest/pipeline/timestamp
{
  "description": "Adds timestamp to documents",
  "processors": [
    {
      "set": {
        "field": "_source.timestamp",
        "value": "{{_ingest.timestamp}}"
      }
    }
  ]
}

И вызывать его при вставке документов

POST index39/_doc?pipeline=timestamp
{
  "id":1
}

Ответ:

{
        "_index" : "index39",
        "_type" : "_doc",
        "_id" : "KWF6920BpmJq35glEsr3",
        "_score" : 1.0,
        "_source" : {
          "id" : 1,
          "timestamp" : "2019-10-23T07:17:15.639200400Z"
        }
      }
}
...