elasticsearch - 可以提供整个文档以通过查询更新吗?
问题描述
我想根据其字段搜索存储在 ElasticSearch 中的文档,并用新版本覆盖整个文档。我是 ES 新手,但据我所知,如果我通过 ES 分配的文档搜索文档,我只能使用 Update _id
,所以我希望使用 Update By Query 来执行此操作。不幸的是,如果我使用按查询更新,那么我需要提供一个脚本来更新我关心的字段。如下所示:
POST my-index-000001/_update_by_query
{
"script": {
"source": "ctx._source.count++",
"lang": "painless"
},
"query": {
"term": {
"user.id": "kimchy"
}
}
}
我的问题是我的文档有几十个字段,我不知道其中哪些会发生变化。我可以遍历它们并构建脚本,但我希望有一种方法可以简单地提供您想要的文档,并让与您的查询匹配的任何内容都被该文档覆盖。这可以通过查询更新吗?_id
或者,除了执行更新之外,还有其他方法可以匹配其他内容吗?
解决方案
您的问题并不完全清楚,您是否尝试更新给定 ID 的整个文档?如果是,您可以使用 put 调用简单地覆盖现有文档:
PUT 索引名称/_id
这将覆盖现有索引,因此请确保您在 PUT 调用中发送完整的文档,而不仅仅是已更改的字段。
推荐阅读
- python - 打印整个列表而不是索引编号的元素,其他时候正确打印列表中的一个元素 - 代码完全相同
- google-cloud-platform - 带有列表抛出错误的 Terraform 多级地图
- flutter - FutureProvider 使用 .whenData() 速记
- javascript - 我在电子商务网站上工作,但在调试时遇到问题
- python - Pandas 版本之间的不同行为
- python - 在使用平衡数据集训练 LGBM 时会出现以下错误
- swiftui - ScrollViewReader 锚中心创建空闲空间
- gradle - 显示 JavaExec 任务的标准输出
- html - 使 div 覆盖完全匹配视频 div
- python - 在 ast.ImportFrom 中查找 end_lineno