Неверно сформированное поле даты для заполнения в новом поле вasticsearch - PullRequest
0 голосов
/ 13 февраля 2019

Я создал индекс вasticsearch с несколькими полями даты и отформатировал столбец как yyyy-mm-dd HH:mm:ss.В конце концов я обнаружил, что дата искажена и вводит неправильные данные в поля.В индексе более 600 000 записей, и я не хочу оставлять какие-либо данные.Теперь мне нужно создать другое поле или новый индекс с тем же полем даты и форматом, что и YYYY-MM-ddTHH:mm:ss.Z, и мне нужно заполнить все записи новым индексом или новыми полями.

Я использовал конвейер обработки данных, как показано ниже.но это не удается.Исправьте меня здесь, что-то не так.

PUT _ingest/pipeline/date-malform
{
  "description": "convert malformed date to timestamp",
    "processors": [      
      {
        "date": {
          "field": "event_tm",
          "target_field" : "event_tm",
          "formats" : ["YYYY-MM-ddThh:mm:ss.Z"]
          "timezone" : "UTC"
        }
      },      
      {
        "date": {
          "field": "vendor_start_dt",
          "target_field" : "vendor_start_dt",
          "formats" : ["YYYY-MM-ddThh:mm:ss.Z"]
          "timezone" : "UTC"
        }
      },
        {
        "date": {
          "field": "vendor_end_dt",
          "target_field" : "vendor_end_dt",
          "formats" : ["YYYY-MM-ddThh:mm:ss.Z"]
          "timezone" : "UTC"
        }
      }   
    ]
}

Я создал конвейер и использовал переиндексацию, как показано ниже

POST _reindex
{
  "source": {
    "index": "tog_gen_test"
  },
  "dest": {
    "index": "data_mv",
    "pipeline": "some_ingest_pipeline",
    "version_type": "external"
  }
}

Я получаю приведенную ниже ошибку при выполнении переиндексации

"failures": [
    {
      "index": "data_mv",
      "type": "_doc",
      "id": "rwN64WgB936y_JOyjc57",
      "cause": {
        "type": "exception",
        "reason": "java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: unable to parse date [2019-02-12 10:29:35]",
        "caused_by": {
          "type": "illegal_argument_exception",
          "reason": "java.lang.IllegalArgumentException: unable to parse date [2019-02-12 10:29:35]",
          "caused_by": {
            "type": "illegal_argument_exception",
            "reason": "unable to parse date [2019-02-12 10:29:35]",
            "caused_by": {
              "type": "illegal_argument_exception",
              "reason": "Illegal pattern component: T"
            }
          }

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вы можете использовать logstash, как предложил Shailesh Pratapwar, но у вас также есть возможность использовать erasearch reindex + ingest, чтобы сделать то же самое:

  1. Создать конвейер загрузки с правильной датойпроцессор для исправления формата даты / манипуляции: https://www.elastic.co/guide/en/elasticsearch/reference/master/date-processor.html

  2. реиндексация данных из старого индекса в новый индекс с манипулированием датой.от: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html

Reindex также может использовать функцию Ingest Node, указав конвейер

0 голосов
/ 13 февраля 2019

Использование Logstash .

Чтение из ElasticSearch с использованием LogStash.

Управление форматом даты .

Запись в ElasticSearch с использованием LogStash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...