Todos los productos
Search
Centro de documentos

Tablestore:Exploración paralela

Última actualización: Sep 03, 2026

Si no requiere un orden específico en los resultados de consulta, utilice la función de exploración paralela para obtenerlos de manera eficiente.

Requisitos previos

Parámetros

Parámetro

Descripción

tableName

Nombre de la tabla de datos.

indexName

Nombre del índice de búsqueda.

scanQuery

query

Instrucción de consulta para el índice de búsqueda. La operación admite consultas por término, consultas difusas, consultas por rango, consultas geográficas y consultas anidadas, similares a las de la operación Search.

limit

Número máximo de filas que devuelve cada llamada a ParallelScan.

maxParallel

Cantidad máxima de tareas de exploración paralela por solicitud. Este valor varía según el volumen de datos; a mayor volumen, se requieren más tareas paralelas. Utilice la operación ComputeSplits para consultar el límite máximo permitido por solicitud.

currentParallelId

Identificador de la tarea de exploración paralela en la solicitud. Valores válidos: [0, Valor de maxParallel).

token

Token utilizado para paginar los resultados de la consulta. La respuesta de ParallelScan incluye el token correspondiente a la página siguiente, el cual permite recuperar dicha página.

aliveTime

Periodo de validez de la tarea de exploración paralela actual, que coincide con la vigencia del token. Unidad: segundos. Valor predeterminado: 60. Se recomienda mantener este valor. Si no se envía una nueva solicitud dentro del periodo establecido, ya no será posible consultar más datos. El tiempo de validez del token se renueva con cada solicitud enviada.

Nota

Las sesiones caducan antes de lo previsto si se modifican dinámicamente los índices de conmutación en los esquemas, falla un servidor individual o se ejecuta un balanceo de carga en el lado del servidor. En estos casos, debe recrear las sesiones.

columnsToGet

Nombre de la columna que se devolverá en el resultado de agrupación. Agregue el nombre de la columna a Columns.

Si desea devolver todas las columnas del índice de búsqueda, utilice la operación ReturnAllFromIndex, que ofrece una sintaxis más concisa.

Importante

No es posible usar ReturnAll en este contexto.

sessionId

Identificador de sesión de la tarea de exploración paralela. Llame a la operación ComputeSplits para crear una sesión y consultar la cantidad máxima de tareas paralelas admitidas en la solicitud.

Ejemplos

A continuación se muestra un código de ejemplo para realizar una exploración paralela:

// 1. Obtain the session ID. 
let computeSplits = await new Promise((resolve, reject) => {
    client.computeSplits({
        tableName: tableName,
        searchIndexSplitsOptions: {
            indexName: indexName,
        }
    }, function (err, data) {
        if (err) {
            console.log('computeSplits error:', err.toString());
            reject(err);
        } else {
            console.log('computeSplits success:', data);
            resolve(data)
        }
    })
})

// 2. Specify query conditions. 
const scanQuery = {
    query: {
        queryType: TableStore.QueryType.MATCH_ALL_QUERY,
    },
    limit: 1000,
    aliveTime: 30,
    token: undefined,
    currentParallelId: 0,
    maxParallel: 1,
}

// 3. Create a ParallelScan request. In this example, a synchronous request is created. You can create an asynchronous request based on your business requirement. 
const parallelScanPromise = function () {
    return new Promise(function (resolve, reject) {
        client.parallelScan({
            tableName: tableName,
            indexName: indexName,
            columnToGet: {
                returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX,
            },
            sessionId: computeSplits.sessionId,
            scanQuery: scanQuery,
        }, function (err, data) {
            if (err) {
                console.log('parallelScan error:', err.toString());
                reject(err);
            } else {
                console.log("parallelScan, rows:", data.rows.length)
                resolve(data)
            }
        });
    })
}
let totalCount = 0 // Specify that the total number of rows that meet the query conditions is returned. 
let parallelScanResponse = await parallelScanPromise()
totalCount = totalCount + parallelScanResponse.rows.length
// 4. Pull data by using an iterator until all data is pulled. 
while (parallelScanResponse.nextToken !== null && parallelScanResponse.nextToken.length > 0) {
    scanQuery.token = parallelScanResponse.nextToken
    parallelScanResponse = await parallelScanPromise()
    totalCount += parallelScanResponse.rows.length
}
console.log("total rows:", totalCount)

Preguntas frecuentes

What do I do if no data can be found by calling the Search operation?

Referencias

  • Los índices de búsqueda admiten los siguientes tipos de consulta: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, Boolean query, geo query, nested query, vector query y exists query. Seleccione el tipo adecuado según sus necesidades empresariales.

    Para ordenar o paginar las filas que cumplen con los criterios de consulta, utilice la función de ordenamiento y paginación. Para más información, consulte Sorting and paging.

    Si necesita reducir el conjunto de resultados con base en una columna específica, emplee la función de colapso (distinct). De esta forma, los datos del tipo especificado aparecerán solo una vez en los resultados. Para más información, consulte Collapse (distinct).

  • Para analizar datos en una tabla, como obtener valores extremos, sumas o el número total de filas, ejecute operaciones de agregación o instrucciones SQL. Para más información, consulte Aggregation y SQL query.

  • Si requiere obtener rápidamente todas las filas que cumplen con los criterios sin necesidad de ordenarlas, llame a las operaciones ParallelScan y ComputeSplits para aprovechar la exploración paralela. Para más información, consulte Parallel scan.