我使用 python 将数据从 mongodb 发送到 elasticsearch。
有一个名为 的时间戳字段update_time
,映射如下:
"update_time" : {
"type": "date",
"format": "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
epoch_millis
用于时间戳。
一切完成后,我曾经range
在日期范围内查询文档。但没有任何回报。经过一番研究,我认为问题是:python时间戳int(time.time())
是10位,但在elasticsearch中是13位,官方示例:
输入 my_index/my_type/2?timestamp=1420070400000。
所以我尝试将 update_time 字段更新 1000 倍:
{
"script": {
"inline": "ctx._source.update_time=ctx._source.update_time*1000"
}
}
不幸的是,我发现一切都update_time
变成了负数。然后我想出Java int 类型是pow(2,32) -1
,远低于1420070400000
. 所以我猜时间戳字段不应该是 int ?
然后我想将字段值从 int 更新为字符串(我不想更改字段映射类型,我知道更改映射类型需要重新索引,但这里只需要更改值)
但我不知道我可以使用什么脚本,官方脚本文档没有提到这个