我有一个名为 last_post_date 的字段存储在elasticsearch中。
它显示为:
...
"last_post_date": "1485281760000",
...
映射为:
"last_post_date": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
现在我使用映射创建一个新索引:
...
"last_post_date": {
"type": "date",
"format": "epoch_millis",
"index": true,
"doc_values": true
},
...
通过以下方式完成重新索引: http://127.0.0.1:9200/_reindex
问题在于,即使重新索引后,字段的值也会以字符串而不是日期存储,而映射显示:
...
"last_post_date": {
"type": "date",
"store": true,
"format": "epoch_millis"
},
...
知道为什么吗?
答案 0 :(得分:1)
您在源代码中看到的内容,即"1485281760000"
形式的字符串式时间戳不会更改,并且始终会反映您发送给Elasticsearch的完全相同的JSON。
但是,在编入索引时,字符串"1485281760000"
将被解释为索引并将其编入长值1485281760000
。
如果要更改JSON源,而是使用较长的时间戳而不是字符串时间戳(如下所示)发送,则源将显示您的长时间戳。
...
"last_post_date": 1485281760000,
...
长话短说:
_source
中看到的内容正是您发送给ES的内容epoch_millis
的日期