ES: шаблон индекса не конвертируется из метки времени UNIX в дату - PullRequest
0 голосов
/ 21 ноября 2018

Я вставляю документы, поступающие из Apache Spark через структурированную потоковую передачу в ES.

К сожалению, в соединителе Spark-ES есть нерешенная ошибка (https://github.com/elastic/elasticsearch-hadoop/issues/1173), которая отрицательно сказывается на этой датеполя на стороне источника (Spark) отправляются в приемник как ES-метки времени / длинные типы.

Я подумал, что шаблон индекса для его преобразования на стороне ES может быть хорошим обходным путемв правильном формате (дата) в ES.

Мой шаблон индекса:

{
  "index_patterns": "my_index_*",
  "mappings": {
    "peerType_count": {
      "dynamic_templates": [
        {
          "timestamps": {
            "path_match": "*.window.*",
            "match_mapping_type": "long",
            "mapping": {
              "type": "date",
              "format": "epoch_millis"
            }
          }
        }
      ]
    }
  }
}

Но документ в ES по-прежнему имеет метку времени Unix: - /

{
  "_index": "my_index",
  "_type": "peerType_count",
  "_id": "kUGWNmcBtkL7EG0gS280",
  "_version": 1,
  "_score": 1,
  "_source": {
    "window": {
      "start": 1535958000000,
      "end": 1535958300000
    },
    "input__source_peerType": "peer2",
    "count": 1
  }
}

У кого-нибудь есть идеи, что может быть не так?

PS: Есть ли хороший отладчик es-mapping-отладчика?

1 Ответ

0 голосов
/ 22 ноября 2018

Хотите поделиться своим обходным путем, просто создайте конвейер загрузки в ES со следующим http-запросом:

PUT _ingest/pipeline/fix_date_1173
{
    "description": "converts from unix ms to date, workaround for https://github.com/elastic/elasticsearch-hadoop/issues/1173",
    "processors": [
      {
        "date": {
          "field": "window.start",
          "formats": ["UNIX_MS"],
          "target_field":"window.start"
        }
      },
      {
        "date": {
          "field": "window.end",
          "formats": ["UNIX_MS"],
          "target_field":"window.end"
        }
      }
    ]
  }

и включите его в свой код искры с помощью

.option("es.ingest.pipeline", "fix_date_1173")

Спасибо @valза подсказку!

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