elasticsearch Elasticsearch-如何从日期时间字段中提取日期,并将其作为新字段添加到每个文档中,elasticsearch,indexing,elasticsearch,Indexing" /> elasticsearch Elasticsearch-如何从日期时间字段中提取日期,并将其作为新字段添加到每个文档中,elasticsearch,indexing,elasticsearch,Indexing" />

elasticsearch Elasticsearch-如何从日期时间字段中提取日期,并将其作为新字段添加到每个文档中

elasticsearch Elasticsearch-如何从日期时间字段中提取日期,并将其作为新字段添加到每个文档中,elasticsearch,indexing,elasticsearch,Indexing,我正在学习elasticssearch,在给我的一个演示数据库中,我有一个日期时间字段,该字段用名称time_戳保存。日期数据保存为文本: "time_stamp":"13-06-2019 04:44:23" 我想创建一个名为“date”的新数据字段,只从每个文档中提取日期,并将其存储在同一文档中。当前索引映射如下所示: { "vp1": { "mappings": { "dynamic": "false", "prope

我正在学习elasticssearch,在给我的一个演示数据库中,我有一个日期时间字段,该字段用名称time_戳保存。日期数据保存为文本:

"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与索引交互

您首先需要更新映射,以便添加新字段,因为
动态
设置设置为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]"
  }
}

非常感谢…当我在kibana上粘贴上面的代码时,我得到一个错误,指示
坏字符串
。我以CURL的形式从终端运行代码,并在[Source:org.elasticsearch.transport.netty4]处得到错误“
error”:{“root_cause”:[{“type”:“json_parse_exception”,“reason”:“unrecogned character escape's”(代码115)\n。ByteBufStreamInput@772237c8;第4行,第38列]“}],“类型”:“json_parse_exception”,“原因”:“无法识别的字符转义”(代码115)\n位于[来源:org.elasticsearch.transport.netty4。ByteBufStreamInput@772237c8;第4行,第38列]“},“状态”:500}
Oops,请再试一次,我错过了一个转义字符再次感谢你…当我运行代码时得到了这个错误
“原因”:{“类型”:“映射器解析\异常”,“原因”:“对象映射为[date]试图解析字段[date]作为对象,但找到了一个具体的值“},“status”:400}]}
,这意味着您的索引中已经有一个名为
date
的字段。您能否显示从
curl-XGET localhost:9200/vp1
以及您正在运行的ES版本中得到的内容?我想我犯了一个错误,输出是:
{“vp1”:{“别名”:{},“映射”:{“动态”:“假”属性“{”客户机id“{”类型“{”文本“}”,日期“{”属性“{”日期“{”类型“{”日期“}”,编码“{”类型“{”浮点“}”,图像名“{”类型“{”文本“}”,indx“{”类型“}”,文本“}”,machid“{”类型“:”文本“}”,匹配id“{”类型“:”浮点“}”,序列“{”id“{”类型“:”整数“}”,时间戳“{”类型“:{”文本“}”,设置“{”文本“}”,设置“{”索引“{”数“{”提供的索引“{1“{最大结果窗口“:”100000“,”创建日期“:”1561486804831“,”副本数量“:”1“,”uuid“:”-7f7GBFFTB2ACbxupXj kQ“,”版本“:{”创建“:”7010199“}}