- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在遍历29,000个文档,在每个文档中,我都会向嵌套字段中添加一个子文档并进行更新。为了管理我要处理的数据量,我将循环分为10,000组,并使用ES大小和from选项来控制每次迭代的起始位置。因此,一旦第一个10,000更新,我将执行另一个查询以获取下一个10,000,依此类推...问题是,每当我进入第二组时,批处理中都已经处理了少数文档。前10,000个,当我到达第三个批次时,所有应处理的文档应从20,000到29,000范围内获取文档。
似乎我处于某种竞争状态,因为按版本号进行排序或查询无法获得任何结果。我也尝试过在查询之间刷新和刷新,但仍然没有运气。
有人遇到过类似的问题吗?
最佳答案
在ElasticSearch中,什么时候写到什么时候可以读之间最多有1秒的延迟。您可以轻松创建一个测试来验证这一点,插入ID为1的记录,立即尝试读取ID为1,您将获得空值。
您要做的是在ES中使用“SCROLL SCAN
”。使用滚动条时,它会跟踪已返回给您的记录,因此当您请求退回下一个10,000条记录时,可以确保不会重复。
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html#scroll-scan
注意:当您指定滚动扫描的大小时,您指定的大小为 /分片。因此,如果要返回10,000个块,则需要指定size = 10,000/# number of shards
关于node.js - Elasticsearch在不同的FROM值处返回相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31126895/
我是一名优秀的程序员,十分优秀!