Формат чтения дат ElasticSearch - PullRequest
0 голосов
/ 16 ноября 2018

Это мое сопоставление для одного из свойств в моей модели ElasticSearch:

"timestamp":{
  "type":"date",
  "format":"dd-MM-yyyy||yyyy-MM-dd'T'HH:mm:ss.SSSZ||epoch_millis"
}

Я не уверен, что неправильно понимаю документацию.В нем четко сказано:

Первый формат также будет действовать как тот, который преобразует обратно из миллисекунд в строковое представление.

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

К сожалению, когда я перехожу к самому документу (таким образом, доступ к конечной точке ElasticSearch напрямую, а не через прикладной уровень)) Я все еще получаю:

"timestamp" : "2014-01-13T15:48:25.000Z",

Что мне здесь не хватает?.

1 Ответ

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

Как уже упоминалось @Val, вы получите значение / формат как то, как оно индексируется.

Однако, если вы хотите просмотреть дату в определенном формате независимо от того, в каком формате она была проиндексирована, вы можете использовать Поля скрипта . Обратите внимание, что это будет применяться во время запроса.

Ниже приведено описание вашего решения.

POST <your_index_name>/_search
{
  "query":{
    "match_all":{ }
  },
  "script_fields":{
    "timestamp":{
       "script":{
         "inline": "def sf = new SimpleDateFormat(\"dd-MM-yyyy\");def dt = new Date(doc['timestamp'].value);def mydate = sf.format(dt);return mydate;"
       }
    }
  }
}

Дайте мне знать, как это происходит.

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