Php Elasticsearch在映射时更改日期格式
我正在使用Laravel和Elasticsearch。但是我不能映射我的mysql时间戳,因为默认情况下ES只支持时间戳为ISO 8601“2015-02-02T15:30:20” 我想映射我的时间戳,看起来像“2015-02-15 15:30:22”-没有“T”的TS 是否可以更改ES以允许时间戳,如“2015-02-15 15:30:22”?在映射中设置一个,以便它接受MySQL格式:Php Elasticsearch在映射时更改日期格式,php,mysql,laravel,
elasticsearch,Php,Mysql,Laravel,
elasticsearch,我正在使用Laravel和Elasticsearch。但是我不能映射我的mysql时间戳,因为默认情况下ES只支持时间戳为ISO 8601“2015-02-02T15:30:20” 我想映射我的时间戳,看起来像“2015-02-15 15:30:22”-没有“T”的TS 是否可以更改ES以允许时间戳,如“2015-02-15 15:30:22”?在映射中设置一个,以便它接受MySQL格式: curl -XPUT "http://localhost:9200/test/date-format/_m
curl -XPUT "http://localhost:9200/test/date-format/_mapping" -d'
{
"date-format" : {
"properties": {
"timestamp": {"type": "date","index": "not_analyzed","format" : "yyyy-MM-DD HH:mm:ss"}
}
}
}'
然后通过发布消息进行测试:
curl -XPOST "http://localhost:9200/test/date-format" -d'
{
"timestamp": "2014-10-22 20:03:12"
}'
它应返回:
{"_index":"test","_type":"test-date","_id":"AUuD22Ls9cHgxNzY1tfJ","_version":1,"created":true}
在映射中设置一个,以便它接受MySQL格式:
curl -XPUT "http://localhost:9200/test/date-format/_mapping" -d'
{
"date-format" : {
"properties": {
"timestamp": {"type": "date","index": "not_analyzed","format" : "yyyy-MM-DD HH:mm:ss"}
}
}
}'
然后通过发布消息进行测试:
curl -XPOST "http://localhost:9200/test/date-format" -d'
{
"timestamp": "2014-10-22 20:03:12"
}'
它应返回:
{"_index":"test","_type":"test-date","_id":"AUuD22Ls9cHgxNzY1tfJ","_version":1,"created":true}
Laravel时间戳通常是碳实例,因此只需将其转换为您的: 那么你需要做的就是
$unixEpochMilli = $user->created_at->timestamp * 1000; //epoch_milli is elastic default
$isoTime = $user->created_at->toIso8601String(); //also a default
请记住,如果查看Kibana中的数据,它默认为浏览器显示时间。只需单击JSON表示,您将看到类似于
2018-12-19T05:14:21.000Z
的内容,指示存储的历元。Laravel时间戳通常是碳实例,因此只需将它们转换为您的:
那么你需要做的就是
$unixEpochMilli = $user->created_at->timestamp * 1000; //epoch_milli is elastic default
$isoTime = $user->created_at->toIso8601String(); //also a default
请记住,如果查看Kibana中的数据,它默认为浏览器显示时间。只需单击JSON表示,您将看到类似于
2018-12-19T05:14:21.000Z
的内容,指示存储的纪元。放入您的代码?你能使用PHP的str_替换或MySQL的date_格式吗?在ES中使用是绝对可能的。您只需在映射中指定模式。我不知道拉雷维尔要怎么做。贝娄的答案是有效的。我在laravel中使用了这个包,但我不确定它是否支持嵌套对象,如果您也需要的话,请把代码放在哪里?你能使用PHP的str_替换或MySQL的date_格式吗?在ES中使用是绝对可能的。您只需在映射中指定模式。我不知道拉雷维尔要怎么做。贝娄的答案是有效的。我在laravel中使用了这个包,但我不确定它是否也支持嵌套对象,如果您需要的话。奥利,知道如何强制支持0000-00-00 00:00:00默认时间戳吗?奥利,知道如何强制支持0000-00-00 00:00默认时间戳吗?