es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estableciendo el intervalo de actualización de Elastic Search cuando la Política de Actualización es “ninguna”.

Estaba comparando los resultados de búsqueda elástica con refresh_interval 1s y 30s, cuando la política de actualización se estableció en None al indexar 2000 documentos a la misma velocidad. Sin embargo, no hubo mucha diferencia en la velocidad de indexación entre ellos.

Usando la versión:

<dependency>
    <groupid>org.springframework.data</groupid>
    <artifactid>spring-data-elasticsearch</artifactid>
    <version>4.2.0</version>
</dependency>

Configuración:

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

y el documento y la configuración:

@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,

)

Miré los documentos de Elasticsearch para la actualización y el intervalo de actualización, pero quería asegurarme de que en caso de establecer la política de actualización en None, realmente ayudaría a aumentar el intervalo de actualización?

¿En escenarios de indexación intensiva usando Elastic Search, aumentaría la velocidad de indexación al aumentar el intervalo de actualización de un índice?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Análisis de los resultados de Elasticsearch con el Intervalo de Actualización

    La comparación se realizó entre los resultados de Elasticsearch con un Intervalo de Actualización de 1s y 30s cuando la Política de Actualización estaba configurada en Ninguna al indexar 2000 documentos a la misma velocidad. Sin embargo, no hubo mucha diferencia en la velocidad de indexación entre ellos.

    Dependencias

    La versión utilizada para las dependencias fue:

    <dependency>
        <groupid>org.springframework.data</groupid>
        <artifactid>spring-data-elasticsearch</artifactid>
        <version>4.2.0</version>
    </dependency>
    

    Configuración

    El ElasticsearchTemplate se configuró de la siguiente manera:

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

    Documento y Configuraciones

    La clase de documento Book se definió de la siguiente manera:

    @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,
    )
    

    Análisis

    Según la documentación de Elasticsearch para la Actualización y el Intervalo de Actualización, la actualización de un índice después de cada documento indexado puede ser ineficiente, y se recomienda configurar un Intervalo de Actualización con un valor más alto.

    Sin embargo, la comparación realizada entre los resultados de Elasticsearch con un Intervalo de Actualización de 1s y 30s cuando la Política de Actualización estaba configurada en Ninguna no mostró mucha diferencia en la velocidad de indexación. Esto sugiere que aumentar el Intervalo de Actualización no necesariamente mejora la velocidad de indexación en escenarios de indexación intensiva.

    Es posible que se requiera una investigación adicional y pruebas para confirmar la efectividad de aumentar el Intervalo de Actualización para mejorar el rendimiento en escenarios de indexación intensiva.

Comments are closed.