¿Por qué la métrica de documentos eliminados es tan alta en el clúster de Amazon OpenSearch Service?

Actualización más reciente: 30-09-2021

He eliminado documentos del clúster de Amazon OpenSearch Service (sucesor de Amazon Elasticsearch Service), pero no se ha recuperado espacio en el disco. ¿Cómo libero más espacio en el disco?

Descripción corta

En OpenSearch Service, la métrica DeletedDocuments es un contador que muestra el número de documentos marcados para su eliminación. La métrica DeletedDocuments muestra un aumento después de que se procesan las solicitudes de eliminación y se fusionan los segmentos de índice dentro del clúster.

OpenSearch Service ejecuta automáticamente la operación de la API merge mediante la configuración de políticas de combinación. Durante una combinación, los segmentos más pequeños se fusionan en segmentos más grandes para mantener el tamaño del índice. Los documentos marcados para su eliminación también se borran para liberar espacio en disco adicional.

Para recuperar espacio en disco inmediatamente, puede eliminar un índice en lugar de eliminar documentos individuales. O bien, también puede utilizar la API force merge junto con el parámetro only_expunge_deletes para limpiar los documentos eliminados de un índice.

Para mantener los metadatos del índice mientras recupera espacio en disco en el clúster, considere los siguientes métodos:

Resolución

Verificar el número de documentos eliminados

Para verificar el número de documentos eliminados del clúster de OpenSearch Service, ejecute la API cluster stats. El valor obtenido de la llamada a la API cluster stats aparece en la métrica DeletedDocuments de su clúster. El resultado devuelve una suma de los documentos eliminados de todos los índices presentes en el clúster. Este recuento se puede verificar con el campo “docs.deleted” del resultado de respuesta.

Por ejemplo, si el clúster tiene tres índices (index1, index2 e index3), ejecute la llamada a la API index stats:

GET index1/_stats
…
"docs" : {
        "count" : 100,
        "deleted" : 1
      }
… 
GET index2/_stats
…
"docs" : {
        "count" : 100,
        "deleted" : 5
      }
… 
GET index3/_stats
…
"docs" : {
        "count" : 100,
        "deleted" : 8
      }
…

La llamada a la API cluster stats agrega el campo “docs.deleted” para todos los índices presentes en el clúster:

...
"docs" : {
      "count" : 1227677521,
      "deleted" : 14
    }
…

Si elimina index2, la llamada a la API cluster stats calcula solo los valores de index1 e index3:

GET _cluster/stats
...
"docs" : {
      "count" : 1227677521,
      "deleted" : 9
    }

Los segmentos se combinan y se borran los metadatos del índice para index2. Como resultado, el valor de la métrica DeletedDocuments disminuyó a 9.

Confirmar el tamaño de los documentos

Para verificar el tamaño de los documentos y el recuento de un índice, utilice la API cat indices. Asegúrese de que el nuevo documento tenga el mismo tamaño que el documento existente en el clúster de OpenSearch Service. El uso del mismo tamaño de documento garantiza que los documentos eliminados no ocupen espacio de disco adicional.

Borrar los documentos eliminados

Para recuperar espacio en disco de forma manual, ejecute la API force merge junto con el parámetro only_expunge_deletes establecido como “verdadero”:

POST /<index-name>/_forcemerge?only_expunge_deletes=true

Nota: Esta operación solo borrará los segmentos que contengan documentos marcados para su eliminación.

Como resultado, force merge reduce la cantidad de espacio en disco que se utiliza. Una vez creados los segmentos nuevos, se quitan los antiguos y los nuevos ya no contienen los documentos marcados para su eliminación. Para obtener más información sobre los documentos eliminados, consulte Gestión de Lucene de los documentos eliminados en el sitio web de Elasticsearch.

Sin embargo, tenga en cuenta lo siguiente al realizar la operación de force merge:

  • Ejecute force merge en el clúster solo cuando haya suficiente espacio de almacenamiento libre. Esta acción es una operación que consume muchos recursos.
  • La operación de force merge desencadena un proceso intensivo de I/O y bloquea todas las solicitudes nuevas al clúster hasta que se complete la combinación.
  • Llame a la operación de force merge únicamente con índices de solo lectura cuando no se escriban datos adicionales en el índice. Si se llama a force merge en un índice de lectura/escritura, esa acción puede provocar que se generen segmentos muy grandes (>5 GB por segmento). Cuando esto sucede, la política de combinación automática no tendrá en cuenta estos segmentos muy grandes para combinaciones futuras hasta que los segmentos contengan en su mayoría documentos eliminados. Como resultado, el uso del disco aumenta y el rendimiento de las búsquedas empeora.

También puede utilizar la API delete by query o la API delete para eliminar de forma manual cualquier documento de su clúster.

Recuperar espacio en disco de inmediato

Para recuperar espacio en disco de inmediato, utilice la API delete index. Eliminar un índice no crea marcadores de eliminación. En su lugar, la API delete index borra los metadatos del índice y el espacio en disco se recupera de inmediato. El espacio en disco recuperado se refleja en la métrica DeletedDocuments.

Nota: Es una práctica recomendada eliminar los índices antiguos que no se utilicen. Si elimina un índice activo, asegúrese de bloquear la creación automática de índices. Para obtener más información, consulte Crear índices automáticamente en el sitio web de Elasticsearch.