elasticsearch - 在 ElasticSearch 中有效地部分更新数组字段
问题描述
有没有办法有效地部分更新数组字段中的元素?例如,一个文档有commands
这样一个字段:
"commands": [
{
"id": 1000,
"content": "abc",
},
{
"id": 1001,
"content": "bcd",
},
{
"id": 1002,
"content": "cde",
}
]
更新索引时,我只能有需要更新的命令,而不是所有命令。我尝试使用脚本更新,如下所示:
ctx._source.commands.removeIf(r -> params.commandsToUpdateIds.contains(r.id));
ctx._source.shell.commands.addAll(params.commandsToUpdate);
commands
当列表很大(超过 3000 个命令)时,这不起作用,我遇到很多版本冲突错误,并且更新滞后很长。
我想知道是否有一种对数组字段进行部分更新的好方法?
解决方案
推荐阅读
- testing - 使用 rspeck mock 运行测试用例时遇到错误
- python - Scrapy Crawler:为什么这段代码会产生几十个重复项?
- java - 如果抛出异常,finally 块不会执行
- swift - 无需 autoID 从 Firebase 数据库获取信息
- java - 使用 Java Streams 将数字数组转换为 Map
- python - 带有 Python 的 AIML 文件
- excel - 在 ActiveX 文本框中输入 Unicode 字符
- python - 将复杂的 numpy 数组转换为数量级数组的最佳方法是什么?
- angular - 如何将 Angular 数据模型类映射到 API POST 请求?
- python-3.x - 如何使用 Python 找到偏移和比例因子