ElasticSearch 如何批量更新时间戳字段
ElasticSearch How to bulk update the timestamp field
因此,当我将数据推送到索引时,时区转换出错。它应该是 UTC 而不是 EST。
我已经更正了脚本中的错误,但现有数据的时间戳仍然不正确。
我尝试了一种解决方案:
{ "query": { "match_all": {} }, "script": { "source": "ctx._source['@timestamp'] = OffsetDateTime.parse(ctx._source['@timestamp']).plusHours(5).toString()" } }
但是我在这里得到一个错误:
"reason": "Text '2021-11-24T13:14:47.497' could not be parsed at index 23"
看来我记录中的日期格式无法被 elastic 解析。
只是想知道是否还有其他方法可以做到。如果不是,我想我将不得不手动重新索引脚本中的信息,但这需要一些时间。
如有任何帮助,我们将不胜感激。
看来你要的是这个:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html
如果你决定走脚本路线,应该不会太难,你只是想
1. pull all the existing docs
2. store them in a list
3. iterate over and correct your timestamps
4. delete original docs # https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
5. ingest your new docs with corrected timestamps
因此,当我将数据推送到索引时,时区转换出错。它应该是 UTC 而不是 EST。
我已经更正了脚本中的错误,但现有数据的时间戳仍然不正确。
我尝试了一种解决方案:
{ "query": { "match_all": {} }, "script": { "source": "ctx._source['@timestamp'] = OffsetDateTime.parse(ctx._source['@timestamp']).plusHours(5).toString()" } }
但是我在这里得到一个错误:
"reason": "Text '2021-11-24T13:14:47.497' could not be parsed at index 23"
看来我记录中的日期格式无法被 elastic 解析。
只是想知道是否还有其他方法可以做到。如果不是,我想我将不得不手动重新索引脚本中的信息,但这需要一些时间。
如有任何帮助,我们将不胜感激。
看来你要的是这个:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html
如果你决定走脚本路线,应该不会太难,你只是想
1. pull all the existing docs
2. store them in a list
3. iterate over and correct your timestamps
4. delete original docs # https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
5. ingest your new docs with corrected timestamps