当刷新策略为 none 时设置弹性搜索刷新间隔

Setting elastic search refresh interval when Refresh Policy is none

我将弹性搜索结果与 refresh_interval 1 秒和 30 秒进行比较,当刷新策略设置为 None 以相同的速率索引 2000 个文档时。但是他们的索引速度相差不大

使用版本:

 <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>4.2.0</version>
 </dependency>

配置:

        @Bean
        fun elasticsearchTemplate(): ElasticsearchOperations? {
            var restTemplate = ElasticsearchRestTemplate(client())
            restTemplate.refreshPolicy = RefreshPolicy.None
            return restTemplate
        }

以及文档和设置:

    @Document(indexName = "book")
    @Setting(refreshInterval = "1s")
    class Book(
    
            @Id
            var id: String? = null,
    
            @Field(type = FieldType.Keyword)
            var title: String,
    
            @Field(type = FieldType.Keyword)
            var author: String,
   
    
            @Field(type = FieldType.Date)
            var date: Date,
    
            )

我查看了 refresh 和 refresh_interval 的弹性搜索文档,但我想确保在将刷新策略设置为 None 的情况下,是否真的有助于增加 refresh_interval ?

在使用 elastic seaarch 的繁重索引场景中,是否会提高索引速度以增加索引的刷新间隔?

这些是不同的东西。 refresh(又名 refreshPolicy)让您告诉 ES 在索引后开始刷新并等待它完成(wait_for)或不等待(true)或离开集群做它的工作(falseNone,默认)。

refresh_interval 在未启用 refresh 时最有意义,它定义了集群“完成其工作”的确切方式。刷新是相当繁重的操作,因此建议在索引时增加甚至禁用(设置为-1)。

如果您在更改 refresh_interval 时没有注意到性能提升,那么您可能还没有在 ES 端用尽索引容量:批量大小调整、多重索引 threads/machines 等(请参阅 Tune for indexing speed)