使用CTX查询Elasticsearch更新

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

这是样板:

{  

"script": {

"inline": "ctx._source.timenow = ctx._now"

},

"query": {

"match_all": {}

}

}

当我使用的随机数值,它是工作。假设我将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

这里是由弹性文档:

除了_Source,以下变量可通过ctx映射获得:_index,_type,_id,_version,_routing和_now(当前时间戳)。

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

谢谢

回答:

_now只是更新API,即在打电话时,请在_update端点,不_update_by_query

使用这个代替:

{ 

"script": {

"inline": "ctx._source.timenow = Instant.now().toEpochMilli()"

},

"query": {

"match_all": {}

}

}

以上是 使用CTX查询Elasticsearch更新 的全部内容, 来源链接: utcz.com/qa/261731.html

回到顶部