Elasticsearch无法更新嵌套字段

camsedfj  于 2023-03-17  发布在  ElasticSearch
关注(0)|答案(1)|浏览(141)

我正在使用elastic6.7,并尝试使用点分隔符更新单个嵌套字段,如下所示

POST p_app/_update_by_query
{
  "script": {
    "source": """

   if (ctx._source?.info.status != null) 
    {  
        ctx._source.remove('info.status');
        ctx._source.put('info.status', 'updated_value');
    }   
    """,
    "lang": "painless"
  },
  "query": {
    "terms": {
        "_id": [
          "1011"
        ]
      }
  }
}

但是它并没有更新info对象中的status字段,而是创建了一个新的字段,名为info.status,具有给定的值。

elcex8rz

elcex8rz1#

需要像这样将父对象指定为源

if (ctx._source?.info?.status != null) 
    {  
        ctx._source?.info.remove('status');
        ctx._source?.info.put('status', 'updated_value');
    }

相关问题