gpt4 book ai didi

elasticsearch - 使用CTX通过查询更新Elasticsearch

转载 作者:行者123 更新时间:2023-12-02 22:57:23 30 4
gpt4 key购买 nike

我想更新索引内的所有文档。我发现更新查询是我们应该使用的方法。但是,当我使用ctx._now作为更新文档字段的值时,我遇到了问题,导致字段值变为null。

这是示例:

{
"script": {
"inline": "ctx._source.timenow = ctx._now"
},
"query": {
"match_all": {}
}
}


timenow evidence

当我使用随机数值时,它是有效的。假设我把timenow =5。然后,所有文档字段timenow变成5。但是,使用此ctx方法不起作用。

我该怎么办?

附加信息

这是我的ES信息:

"version" : {
"number" : "5.5.1",
"build_hash" : "19c13d0",
"build_date" : "2017-07-18T20:44:24.823Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
}


我正在使用ctx._now,因为它正在处理文档更新。情况如下:

{
"script": "ctx._source.timenow2 = ctx._now"
}


示例:POST索引/类型/ 24 / _update

这是来自elastic的文档:

In addition to _source, the following variables are available through the ctx map: _index, _type, _id, _version, _routing and _now (the current timestamp).



https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html

谢谢

最佳答案

_now仅在Update API中可用,即,当您调用_update端点时,不调用_update_by_query

使用此代替:

{
"script": {
"inline": "ctx._source.timenow = Instant.now().toEpochMilli()"
},
"query": {
"match_all": {}
}
}

关于elasticsearch - 使用CTX通过查询更新Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47864567/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com