我正在使用嵌套对象(与该帖子相关的用户)为一组文档建立索引(将它们想象为论坛帖子)。我的问题是用户字段可能已更新,但是由于帖子未更改,因此它们未重新索引,并且用户嵌套的对象已过时。有没有一种方法可以更新嵌套对象,而无需再次为整个文档重新编制索引?还是唯一的解决方案是在用户每次更改时重新索引该用户的所有相关帖子?
您可以使用Update API。
curl -XPOST localhost:9200/docs/posts/post/_update -d '{
"script" : "ctx._source.nested_user = updated_nested_user",
"params" : {
"updated_nested_user" : {"field": "updated"}
}
}'
需要注意的是更新脚本支持条件逻辑,如图所示这里。因此,您可以在用户更改时标记论坛帖子,然后遍历帖子以仅更新具有更改用户的帖子。
curl -XPOST 'localhost:9200/docs/posts/post/_update' -d '{
"script" : "ctx._source.tags.contains(tag) ? "ctx._source.nested_user = updated_nested_John" : ctx.op = "none"",
"params" : {
"tag": "updated_John_tag",
"updated_nested_John" : {"field": "updated"}
}
}'
更新
也许我的三元运算符示例不完整。问题中没有提到这一点,但是假设用户在应用程序的单独部分中更改了他们的信息,最好将这些更改以一个脚本应用于论坛帖子。代替使用标签,尝试直接检查用户字段中的更改:
curl -XPOST 'localhost:9200/docs/posts/post/_update' -d '{
"script" : "ctx._source.nested_user.contains(user) ? "ctx._source.nested_user = updated_nested_John" : ctx.op = "none"",
"params" : {
"user": "John",
"updated_nested_John" : {"field": "updated"}
}
}'
如上所述,这可能比重新索引完整帖子的速度要慢。
我有一个elasticsearch服务器,我正在使用Jest客户机通过java服务器访问它,我正在寻找每次更新文档多个字段的最佳方法。 到目前为止,我查看了文档,发现有两种方法可以实现: 通过脚本进行部分更新:我认为它不适合多字段更新(因为我不知道修改的字段)。 整个文档更新:通过重新索引整个文档。 删除文档并对更新的版本进行索引是最好的方法吗?
(在insert方法中):在else语句中,我不明白“front.next”是如何被更新为“prev.next=newNode”的。理论上,我理解它,但实际上,尽管“prev”的值来自“curr”,它的值来自“front”本身,但front不可能因为“prev”而更新。他们是怎么交谈的? (Insert方法)我尝试过调试,当它到达执行的else语句时= } 我希望curr继续使用curr填充节点链
我想在具有指定 URL 的相应文档中将嵌套的“已爬行”更新为 True。 我对mongodb相当陌生,我似乎无法弄清楚这一点,非常感谢任何帮助。
问题内容: 我在我的网站上设置了一个滑动面板。 完成动画制作后,我像这样设置哈希 (这是一个回调,并且在前面已分配)。 这很好用,可以使用户在面板上添加书签,也可以使非JavaScript版本正常工作。 但是,当我更新哈希时,浏览器跳到该位置。我想这是预期的行为。 我的问题是:如何预防这种情况?即如何更改窗口的哈希值,但是如果哈希值存在,浏览器 不能 滚动到该元素?某种东西吗? 我正在使用jQue
假设我们有以下集合,我对此没有什么问题: > 我想增加“item_name”的价格:“my_item_two”,如果它不存在,应该将它追加到“items”数组中。
问题内容: 该代码按预期工作。但是,我不想更新第三个国家作为另一个文档,而是要更新第一个文档。 这样,文档ID 1将有3个国家:印度,中国和巴基斯坦。我想我需要使用doc_as_upsert参数更新API。但是我不确定如何编写JSON。 问题答案: 您可以使用update API 进行脚本更新: 更新 如果要在批量查询中使用它,也可以