首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性查询插入后返回相同结果

弹性查询插入后返回相同结果
EN

Stack Overflow用户
提问于 2017-06-18 08:40:41
回答 1查看 218关注 0票数 0

我正在使用elasticsearch.js将文档从一个索引移动到另一个索引。

1a)查询所有单据的index_new并显示在页面上。1b)使用index_old的查询,根据id获取文档。2)使用insert to index_new,插入来自index_old的结果。3)从index_old中删除单据(按id)。

4)重新查询index_new,查看所有单据(包括新单据)。但是,在这一点上,它返回与1a中返回的结果列表相同的结果。不包括新文档。

这是因为缓存吗?当我刷新整个页面,并触发1a时,新文档就在那里。但不是没有刷新。

谢谢,丹尼尔

EN

回答 1

Stack Overflow用户

发布于 2017-06-18 18:24:13

这是由于在每个分片和副本的elasticsearch索引内发生的段合并和刷新。

无论何时写入索引,我们都不会写入原始索引文件,而是写入较新的称为的较小文件,然后在后台批处理作业中将其合并到较大的文件中。

您可能会遇到的下一个问题是,这种情况多久发生一次,或者如何控制此

  1. 在索引级别配置中有一个名为refresh_interval.的设置它可以有多个值,这取决于您要使用的策略的类型。

refresh_interval -

-1 :要停止elasticsearch,请处理合并,并在您的一端使用elasticsearch中的_refresh API进行控制。

X:x是一个整数,有一个以秒为单位的值。因此,elasticsearch将每x秒刷新一次所有索引。

  1. 如果您在索引中启用了复制,那么您可能还会遇到结果值切换。这只是因为索引有多个分片,并且一个分片有多个副本。因此,不同复制品具有不同的用于刷新的窗口模式。因此,在查询时,查询实际上会同时路由到不同的分片副本,这会在时间窗口中显示不同的状态。

因此,如果您正在使用设置来设置刷新间隔的周期,那么假设在最大下的下一个X到2X秒内具有一致的状态。

Segment Merge Background details

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html

https://www.elastic.co/guide/en/elasticsearch/reference/5.4/indices-update-settings.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44610738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档