gpt4 book ai didi

elasticsearch - Elasticsearch中特定于字段的版本控制

转载 作者:行者123 更新时间:2023-12-02 23:32:16 25 4
gpt4 key购买 nike

关于Elasticsearch如何支持文档级外部版本控制的文档很多。但是,如果要进行部分更新(例如,对特定字段进行更新),则在字段级别进行这种类型的版本检查会很有用。

例如,假设我有一个对象字段name,其中有原始字段valuetimestamp。我只希望如果timestamp值大于Elasticsearch中当前的值,则部分更新成功。

是否有捷径可寻?可以用脚本吗?还是有更标准的方法呢?

最佳答案

是的,使用脚本非常简单。看到这里https://www.elastic.co/guide/en/elasticsearch/reference/2.0/docs-update.html

我在这里写了一个示例,仅当指定的时间戳值(由参数update_time提供)大于“timestamp”字段时,才更新“value”字段。如果时间戳字段值小于update_time参数,则将对其进行更新,否则将不执行更新。

curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"script" : {
"inline": "if(ctx._source.name.timestamp > update_time){ ctx.op = \"none\"};
ctx._source.name.value = value; ctx._source.name.timestamp = update_time;",
"params" : {
"update_time" : 432422,
"value": "My new value"
}
}
}'

如果需要,您可以在脚本中获取当前时间,而不是作为参数传递,例如:
update_time = DateTime.now().getMillis()

关于elasticsearch - Elasticsearch中特定于字段的版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088904/

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