当前位置: 首页 > 面试题库 >

刷新与刷新

刘乐童
2023-03-14
问题内容

如果将新文档索引到Elasticsearch索引,则可在索引操作后1秒钟左右搜索新文档。但是,可以通过调用_flush_refresh对索引进行操作来强制使该文档可立即搜索。这两个操作之间有什么区别-
结果似乎对他们来说是相同的,可以立即搜索文档。

这些操作中的每一项到底是什么?

ES文档似乎并未深入解决此问题。


问题答案:

您得到的答案是正确的,但我认为值得详细说明。

刷新有效地调用了Lucene索引读取器上的reopen,以便可以搜索的数据的时间点快照得到更新。该lucene功能是lucene近实时api的一部分。

一个elasticsearch刷新使可用于搜索文档,但它并不一定使他们被写入到磁盘到永久存储,因为它不叫FSYNC,因此不保证耐用性。使您的数据持久的原因是Lucene提交,这更加昂贵。

虽然您可以每秒调用一次lucene reopen,但是您不能对lucene commit进行相同的操作。

通过lucene,您可以通过经常调用reopen来近实时地搜索新文档,但是您仍然需要调用commit来确保将数据写入磁盘并进行fsync,因此很安全。

Elasticsearch通过为每个分片(有效地是Lucene索引)添加一个事务日志来解决此“问题”,在该日志中存储了尚未提交的写操作。事务日志是html" target="_blank">同步的且安全的,因此即使在尚未提交的文档中,您也可以在任何时间获得持久性。您可以几乎每秒实时搜索文档,因为刷新每秒自动进行一次,并且还可以确保如果发生问题,可以重播事务日志以恢复最终丢失的文档。关于事务日志的好处是它可以在内部用于其他用途,例如,通过id提供实时获取。

一个elasticsearch冲洗有效地触发了Lucene的承诺,并清空还事务日志,因为一旦数据在Lucene的水平承诺,耐久性可以通过Lucene的自身保障。冲洗也可以通过api公开,并且可以进行调整,尽管通常这不是必需的。刷新会自动发生,具体取决于向事务日志中添加了多少操作,它们的大小以及上次刷新的时间。



 类似资料:
  • 问题内容: 在JPA中,如果我们调用EntityTransaction.commit(),它会自动调用EntityManager.flush()吗?还是我们都应该称呼它们?有什么区别?因为我在使用JPA时遇到问题,所以当我向数据库中插入实体时,我会调用persist()。在数据库中,数据已插入(可以获取),但是该数据未显示在我的应用程序中(我使用findAll()进行获取)。在另一个实体上,它出现

  • 在JPA中,如果我们调用EntityTransaction。commit(),它是否自动调用EntityManager。flush()?或者我们应该叫他们两个?有什么区别?因为我对JPA有问题,当我向数据库插入实体时,我调用persist()。在数据库中,数据已经插入(可以提取),但该数据没有显示在我的应用程序中(我使用findAll()提取)。在另一个实体上,它出现了。有什么我不知道的吗?我使用

  • 2.12 刷新 2.12.1 描述 此接口用于增加内容刷新任务 2.12.2 请求地址 地址: https://api.bokecs.com/cont/add_refresh 2.12.3 请求方式 POST 2.12.4 请求参数 1) 请求入参 Urls 待刷新的链接 2)请求出参 { "code": "", "message": "" } code:接口响应代码。200表示成功。 mess

  • 问题内容: 我有一个文件,其中我在页面顶部显示外部页面(使用iframe),其他部分是写在文件中的html代码的输出。 HTML代码如下所示: 现在,我想以编程方式刷新页面而不刷新。 我的问题是我可以不刷新页面就刷新页面吗? 答案/提示将不胜感激。 问题答案: 该嵌在主HMTL页面(或在JSP)。因此,如果刷新页面,则肯定会再次加载iframe。 为了避免这种情况,我可以考虑以下两种选择: 使用A

  • 本文向大家介绍php防止恶意刷新与刷票的方法,包括了php防止恶意刷新与刷票的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php防止恶意刷新与刷票的方法。分享给大家供大家参考。具体实现方法如下: 一般来说,恶意刷新就是不停的去刷新提交页面,导致出现大量无效数据,下面我们来总结一下php 防止恶意刷新页面方法总结。 防止恶意刷页面的原理是: 要求在页面间传递一个验证字符串, 在生成页

  • 问题内容: 我有使用JPA的Web应用程序。这个实体经理保持一堆实体,突然间我从另一侧更新了数据库。我使用 MySQL, 并使用 PhpMyAdmin 并更改一些行。 如何告诉实体管理器重新同步,例如忘记缓存中的所有实体? 我知道有方法,但是有可能怎么做或导致什么结果? 可以肯定,这是昂贵的操作,但必须执行。 问题答案: 有所不同,因为它 修改了您的对象 。该行将是,因此,如果您在实体管理器外部获