The curse of dynamic dates

No, I was not suggesting to change the "Z" in your input data. I was suggesting to replace the "Z" with an "X" in the date formats in your index template.

The following works for me:

PUT _template/tpl
{
  "template": "myindex.*",
  "mappings": {
    "dynamic_date_formats": [
      "basic_ordinal_date_time",
      "yyyy-MM-dd'T'HH:mm:ss.SX",
      "yyyy-MM-dd'T'HH:mm:ss.SSX",
      "yyyy-MM-dd'T'HH:mm:ss.SSSX"
    ]
  }
}

PUT myindex.1/_doc/1
{
  "my_date": "2018-12-23T04:48:08.123Z"
}

GET myindex.1/_mapping

Did you delete your index before you retried indexing your data? Index templates are only applied to new indexes, not to existing indexes.