Настройка интервала обновления эластичного поиска при отсутствии политики обновления

#kotlin #elasticsearch #refresh #spring-data-elasticsearch

#kotlin #elasticsearch #обновить #spring-data-elasticsearch

Вопрос:

Я сравнивал результаты эластичного поиска с refresh_interval 1s и 30s, когда для политики обновления было установлено значение 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 ?

В сценариях интенсивной индексации с использованием эластичного seaarch улучшит ли скорость индексации увеличение интервала обновления индекса?

Ответ №1:

Это разные вещи. refresh (он же refreshPolicy ) позволяет указать ES запускать обновление после индексации и ждать его завершения ( wait_for ) или не ждать ( true ) или просто оставить cluster выполнять свою работу ( false , None , по умолчанию).

refresh_interval имеет наибольший смысл, когда refresh не включен, и он определяет, как именно кластер «выполняет свою работу». Обновление — довольно тяжелая операция, поэтому рекомендуется увеличить его или даже отключить (установить значение -1 ) на время индексации.

Если вы не заметили улучшения производительности при изменении refresh_interval , то, вероятно, вы не исчерпали возможности индексации на стороне ES: массовая настройка размера, несколько потоков / машин индексации и т. Д. (см. Настройка скорости индексации)