微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用python编辑保存在Elasticsearch中的文档

如何解决如何使用python编辑保存在Elasticsearch中的文档

我是 elasticsearch 的新手,我正在尝试使用 python 执行 CRUD 操作。我已经创建了一个索引,并且能够将文档保存在 Elasticsearch 中。但是,当我尝试更新文档时,整个数据都会被覆盖。例如,在创建文档时有 3 个字段:

data = {
 "typeId":"someValue","typestatus":"someValue","typeLists":"someValue","createdDate","someValue"
}

以上内容在保存文档时被保存。在编辑上述文档时, createdDate 被删除。下面是更新文档。

data = {
 "typeId":"someValue","typestatus":"someValueEdited","updatedDate","someValue"
}

有没有办法在不丢失字段的情况下保存/编辑文档?下面是代码

import urllib3
        
        
saveContext = '_doc'
updateContext = '_update'
httpClient = urllib3.PoolManager()
response = httpClient.request('PUT',elasticsearchURL,headers={'headersValue'},body=json.dumps(items))

上下文值附加到 ES URL。

解决方法

是的,您可以使用相同的网址实现您想要的效果。

您可以像现在一样通过点击 following endpoint

创建文档
PUT index/_doc/<id>
{
  "typeId": "someValue","typeStatus": "someValue","typeLists": "someValue","createdDate": "someValue"
}

然后,当您想要部分更新您的文档时,您需要点击一个稍微different endpoint(身体略有不同),即

POST index/_doc/<id>/_update
{
   "doc" : {
     "typeId": "someValue","typeStatus": "someValueEdited","updatedDate": "someValue"
   }
}

那么最终结果将是:

{
  "typeId": "someValue","createdDate": "someValue","updatedDate": "someValue"
}

还要注意,更新文档时,不需要传递值没有改变的字段(即typeIdtypeLists

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。