我正在学习elasticssearch,在给我的一个演示数据库中,我有一个日期时间字段,名称为time_stamp。日期数据另存为文本:
"time_stamp":"13-06-2019 04:44:23"
我想创建一个标题为“ date”的新数据字段,并仅从每个文档中提取日期并将其存储在同一文档中。当前的索引映射如下:
{
"vp1": {
"mappings": {
"dynamic": "false",
"properties": {
"client_id": {
"type": "text"
},
"encod": {
"type": "float"
},
"imagename": {
"type": "text"
},
"indx": {
"type": "text"
},
"machid": {
"type": "text"
},
"matchid": {
"type": "float"
},
"sequence_id": {
"type": "integer"
},
"time_stamp": {
"type": "text"
}
}
}
}
}
我正在使用python3与索引进行交互。
答案 0 :(得分:1)
由于dynamic
设置为false,因此您首先需要更新映射以添加新字段,因此无法自动创建新字段:
PUT vp1/_mapping
{
"properties": {
"date": {
"type": "date"
}
}
}
然后,一种实现所需目标的简单方法是:
POST vp1/_update_by_query
{
"script": {
"source": "ctx._source.date = /\\s/.split(ctx._source.time_stamp)[0]"
}
}