Elasticsearch refresh 和 fresh 特性梳理
时间: 2023-12-20 19:45:37 浏览: 180
Elasticsearch是一个分布式搜索和分析引擎,其中refresh和fresh是两个重要的特性。
1. refresh
refresh是Elasticsearch中一个重要的特性,它用于将最近的索引操作立即刷新到内存中的Lucene索引中。当我们执行索引操作(如添加、更新或删除)时,该操作将被添加到事务日志中,但实际的索引操作并不会立即生效,而是等待refresh操作将其刷新到内存中的Lucene索引中。默认情况下,Elasticsearch每隔1秒自动执行一次刷新操作,但也可以手动执行刷新操作。
2. fresh
fresh是Elasticsearch中的另一个重要特性,它用于控制查询时的缓存行为。当我们执行查询操作时,Elasticsearch会自动将结果缓存到内存中,以便下次查询时可以更快地获取结果。默认情况下,Elasticsearch会缓存所有查询结果,但如果我们需要更精细的控制缓存,可以使用fresh参数来控制缓存行为。如果我们将fresh参数设置为true,则查询结果将不会被缓存,每次查询都会从磁盘中读取最新的数据;如果将fresh参数设置为false,则查询结果将被缓存,但只有在refresh操作执行后才会被更新。
总之,refresh和fresh都是Elasticsearch中非常重要的特性,可以帮助我们更好地控制索引和查询的行为。
相关问题
禁用elasticsearch refresh
禁用elasticsearch的刷新可以通过以下步骤实现:
1. 打开elasticsearch的配置文件elasticsearch.yml,添加以下设置:
```
index.refresh_interval: -1
```
这将禁用索引的自动刷新。
2. 重启elasticsearch服务,使配置生效。
注意:禁用刷新会影响实时搜索和实时更新的速度,因此应该在必要的情况下才使用该设置。
elasticsearch refresh 原理
Elasticsearch 是一款基于 Apache Lucene 的分布式搜索引擎,其 refresh 操作是用于使新插入、更新或删除的文档可以被搜索的。下面是 Elasticsearch refresh 原理的简要介绍:
1. Elasticsearch 中的每个索引分为多个分片,每个分片都是一个独立的 Lucene 索引。
2. 每个分片都有一个 translog(事务日志),用于记录新插入或更新的文档。
3. 当执行 refresh 操作时,Elasticsearch 会将 translog 中的操作持久化到磁盘,同时创建一个新的 Lucene 段。
4. 新的 Lucene 段包含了最新的文档信息,可以被搜索。
5. 每个分片都会执行 refresh 操作,因此所有分片都会包含最新的文档信息。
6. refresh 操作会对性能产生一定的影响,因此应该尽可能地减少其使用频率。
总之,Elasticsearch 的 refresh 操作是将 translog 中的操作持久化到磁盘,并创建新的 Lucene 段,从而使新插入、更新或删除的文档可以被搜索的。
阅读全文