elasticsearch 基于现有文档值的elasticsearch脚本更新
从文档中我了解到,使用
elasticsearch 基于现有文档值的elasticsearch脚本更新,
elasticsearch,lucene,kibana,
elasticsearch,Lucene,Kibana,从文档中我了解到,使用\u searchAPI上的脚本搜索文档很容易,例如,在这里,我可以在创建脚本条件时使用现有的文档值 GET /_search { "query": { "bool" : { "must" : { "script" : { "script" : { "source": "doc['num1'].value &
\u search
API上的脚本搜索文档很容易,例如,在这里,我可以在创建脚本条件时使用现有的文档值
GET /_search
{
"query": {
"bool" : {
"must" : {
"script" : {
"script" : {
"source": "doc['num1'].value > 1",
"lang": "painless"
}
}
}
}
}
}
要使用updateapi
更新文档,我们可以这样做
POST test/_doc/1/_update
{
"script" : "ctx._source.new_field = 'value_of_new_field'"
}
我所期望的是在ES查询中可能出现这种情况?(我尝试过,但没有成功)
为什么我需要?实际上,我的文档上有两个字段。一个称为图像
,具有多个值,例如[“1.jpg”、“2.jpg”、“3.png”,另一个称为图像计数
,基于图像
字段的长度,具有3。在这里,我可以在使用\u搜索
API时获得图像
字段的长度
图像
长度并设置image\u count
字段的值\u update
API上指定每个文档id您正在寻找的是“按查询API更新”。如果要更新大量文档,请小心,可以使用切片滚动方法。 这是最新版本,可能需要根据您的版本进行调整
POST /images_index/_update_by_query
{
"script":{
"source": "ctx._source['images_count'] = ctx._source['images'].length"
}
}
请参见此处获取文档:
POST /images_index/_update_by_query
{
"script":{
"source": "ctx._source['images_count'] = ctx._source['images'].length"
}
}