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.

API de eliminación de índice de Azure Cognitive Search por nombre de archivo

Eliminé un archivo de mi cuenta de almacenamiento de Azure asociada a mi búsqueda cognitiva utilizando el explorador de contenedores. Sin embargo, el indexador todavía encuentra ese archivo cuando se busca en mi aplicación web. Aprendí que debo eliminar el archivo utilizando la API de índice porque aún existe allí. De hecho, cuando consulto el índice de Azure muestra esta respuesta:

{
  "@search.score": 7.9088755,
  "id": "aHR0cHM6Ly9kYXRhbWluaW5nc2EuYmxvYi5jb3JlLndpbmRvd3MubmV0L2RvY3VtZW50YWwvcGxhbl9wcmVtaXVtX3YxODZ2Mi5w****",
  "fileName": "deleted_file.pdf"
}

Pero cuando intento usar la API de eliminación a través de Postman como dicen los documentos utilizando ese id:

POST https://myservicename.search.windows.net/indexes/myindexname/docs/index?api-version=2020-06-30   
Content-Type: application/json   
api-key: [mi clave de administrador]
{  
  "value": [  
    {  
      "@search.action": "delete",  
      "id": "aHR0cHM6Ly9kYXRhbWluaW5nc2EuYmxvYi5jb3JlLndpbmRvd3MubmV0L2RvY3VtZW50YWwvcGxhbl9wcmVtaXVtX3YxODZ2Mi5w****"
    }
  ]  
}

Obtengo un “404 no encontrado”:

{
    "error": {
        "code": "",
        "message": "No se encontró ningún recurso HTTP que coincida con el URI de solicitud 'https://myservicename.search.windows.net/indexes('myindexname')/docs?api-version=2020-06-30'."
    }
}

También intenté usar el nombre del archivo de esta manera:

POST https://myservicename.search.windows.net/indexes/myindexname/docs/index?api-version=2020-06-30   
Content-Type: application/json   
api-key: [mi clave de administrador]
{  
  "value": [  
    {  
      "@search.action": "delete",
      "fileName": "deleted_file.pdf"
    }
  ]  
}

Obtuve el mismo resultado, no sé por qué tomó el índice dentro de paréntesis, la URL está correcta como se muestra arriba… Ya habilité la política de eliminación suave en el índice, los archivos se eliminaron del almacenamiento pero aún están presentes en el índice… ¿alguna idea?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un problema con el formato de la solicitud de API. El formato correcto para eliminar un documento de un índice de Azure Cognitive Search es:

    POST https://[nombre del servicio].search.windows.net/indexes/[nombre del índice]/docs/index?api-version=[versión de la API]
    Content-Type: application/json
    api-key: [clave de administrador]
    {
      "value": [
        {
          "@search.action": "delete",
          "key": "clave del documento"
        }
      ]
    }
    

    El campo “key” es el identificador único del documento y debe coincidir con el campo de clave especificado en el esquema del índice.

    En este caso, parece que se está especificando incorrectamente la clave del documento como la URL del blob de almacenamiento de Azure. Esto probablemente está causando el error “404 no encontrado”.

    Intente utilizar la clave del documento correcta y vea si eso resuelve el problema. Además, asegúrese de que la solicitud de API se esté enviando al punto final correcto y de que la versión de la API especificada sea correcta.

Comments are closed.