要按条件查找并更新局部属性,需要使用Elasticsearch的Update API。以下是一个示例:

假设你有一个名为'my_index'的索引,其中包含以下文档:

{
  'id': 1,
  'name': 'John',
  'age': 30,
  'address': {
    'city': 'New York',
    'state': 'NY',
    'zip': '10001'
  }
}

现在,假设你想按ID更新文档的地址。你可以使用以下代码:

POST my_index/_update/1
{
  'doc': {
    'address': {
      'city': 'San Francisco',
      'state': 'CA',
      'zip': '94109'
    }
  }
}

在这个例子中,我们使用了Update API来更新ID为1的文档。我们使用了'doc'参数来指定要更新的属性。在这种情况下,我们更新了地址属性。

请注意,这个更新操作只会更新指定的属性,而不会对文档的其他属性进行修改。如果你想更新文档的其他属性,你需要在'doc'参数中包含这些属性。

此外,如果你想根据条件更新文档的局部属性,你可以使用Update By Query API。这个API允许你根据查询条件更新文档。以下是一个示例:

POST my_index/_update_by_query
{
  'query': {
    'match': {
      'name': 'John'
    }
  },
  'script': {
    'source': "ctx._source.address.city = 'San Francisco'; ctx._source.address.state = 'CA'; ctx._source.address.zip = '94109'" 
  }
}

在这个例子中,我们使用Update By Query API来更新所有名为'John'的文档的地址属性。我们使用了'query'参数来指定查询条件,然后使用'script'参数来指定要更新的属性。在这种情况下,我们更新了地址属性。请注意,我们使用了'ctx._source'来引用文档的原始源,然后更新了地址属性。


原文地址: https://www.cveoy.top/t/topic/gXY5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录