使用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