Todos los productos
Search
Centro de documentos

Tablestore:Consulta anidada

Última actualización: Sep 28, 2026

Una consulta anidada le permite consultar los datos de las filas secundarias de campos anidados. Los campos anidados no se pueden consultar directamente. Para consultar un campo anidado, debe especificar la ruta del campo y una subconsulta dentro de un objeto NestedQuery. La subconsulta puede ser de cualquier tipo.

Importante
  • En las consultas anidadas solo se pueden consultar campos anidados.

  • En una sola solicitud es posible consultar campos anidados junto con otros tipos de campos. Para obtener más información sobre el tipo de campo anidado, consulte Nested data type.

Operación de API

Para ejecutar una consulta anidada, llame a la operación Search o ParallelScan y establezca el tipo de consulta en NestedQuery.

Parámetros

Parámetro

Descripción

path

Ruta del campo anidado. Esta ruta sigue una estructura similar a un árbol. Por ejemplo, news.title indica el subcampo title dentro del campo anidado denominado news.

query

Consulta que desea ejecutar sobre el subcampo del campo anidado. Puede ser de cualquier tipo.

scoreMode

Valor que se utiliza para calcular la puntuación cuando un campo contiene varios valores.

getTotalCount

Indica si se devuelve el número total de filas que cumplen las condiciones de la consulta. El valor predeterminado es false, lo que significa que no se devuelve dicho total.

Si establece este parámetro en true, el rendimiento de la consulta disminuye.

weight

Peso asignado al campo que desea consultar para calcular la puntuación de relevancia de palabras clave basada en BM25. Este parámetro se usa en escenarios de búsqueda de texto completo. Un peso mayor genera una puntuación de relevancia BM25 más alta para el campo. Su valor debe ser un número de punto flotante positivo.

Este parámetro no afecta la cantidad de filas devueltas, pero sí influye en las puntuaciones de relevancia BM25 de los resultados.

tableName

Nombre de la tabla de datos.

indexName

Nombre del índice de búsqueda.

columnsToGet

Indica si se devuelven todas las columnas de cada fila que cumple las condiciones de la consulta. Para configurarlo, utilice los parámetros returnAll y columns.

El valor predeterminado de returnAll es false, por lo que no se devuelven todas las columnas. En este caso, use el parámetro columns para indicar cuáles desea obtener. Si no especifica ninguna columna, solo se devuelven las de la clave principal.

Si establece returnAll en true, se devuelven todas las columnas.

InnerHits

Configuración de los subcampos del campo anidado.

  • sort: regla de ordenación de las filas secundarias del campo anidado.

  • offset: posición inicial de las filas secundarias que se devuelven cuando el campo anidado tiene varias.

  • limit: número máximo de filas secundarias que se devuelven cuando el campo anidado tiene varias. Valor predeterminado: 3.

  • highlight: configuración de resaltado para los subcampos del campo anidado. Para obtener más información, consulte Highlight.

Métodos

Puede usar la consola de Tablestore o los SDK de Tablestore para ejecutar una consulta anidada. Antes de comenzar, compruebe que se cumplan los siguientes requisitos previos:

  • Contar con una cuenta de Alibaba Cloud o un usuario de RAM con permisos para operar en Tablestore. Para saber cómo otorgar estos permisos a un usuario de RAM, consulte Use a RAM policy to grant permissions to a RAM user.

    Si va a utilizar los SDK de Tablestore, cree un par de AccessKey para su cuenta de Alibaba Cloud o usuario de RAM. Para obtener más información, consulte Create an AccessKey pair.

    Aviso

    El par de AccessKey de una cuenta de Alibaba Cloud tiene permisos sobre todas las operaciones de API. Se recomienda usar un usuario de RAM para llamar a las API o realizar tareas de operación y mantenimiento diarias. Evite codificar de forma fija (hard-code) el AccessKey ID y el AccessKey secret en el código de su proyecto. De lo contrario, el par de AccessKey podría filtrarse y comprometer la seguridad de todos los recursos de su cuenta.

  • Tener una tabla de datos creada. Para obtener más información, consulte Operations on a data table.

  • Haber creado un índice de búsqueda para la tabla de datos. Para obtener más información, consulte Create a search index.

  • Si va a utilizar los SDK de Tablestore, tener una instancia de OTSClient inicializada. Para obtener más información, consulte Initialize an OTSClient instance.

Uso de la consola de Tablestore

La consola de Tablestore solo permite consultar datos de campos anidados de un nivel mediante consultas anidadas.

  1. Vaya a la pestaña Index Management.

    1. Inicie sesión en la consola de Table Store.

    2. En la barra de navegación superior, seleccione un resource group y una región.

    3. En la página Overview, haga clic en el nombre de la instancia o en Instance Management dentro de la columna Actions.

    4. En la pestaña Instance Details y luego en la pestaña Data Table List, haga clic en el nombre de la tabla de datos o en Index Management dentro de la columna Actions.

  2. En la pestaña Index Management, busque el Search Index correspondiente y haga clic en Search dentro de la columna Actions.

  3. En el cuadro de diálogo Search, consulte los datos.

    1. De manera predeterminada, se devuelven todas las columnas. Para devolver solo algunas, desactive Retrieve All Columns e introduzca los nombres de las columnas separados por comas.

      Nota

      Table Store devuelve por defecto las columnas de la clave principal de la tabla de datos.

    2. Seleccione un operador lógico: And, Or o Not.

      Si selecciona And, la consulta devuelve los datos que cumplen todas las condiciones especificadas. Si elige Or, devuelve los datos que cumplen como mínimo una de ellas. Al seleccionar Not, obtiene los datos que no coinciden con las condiciones indicadas.

    3. Seleccione un campo de tipo anidado y haga clic en Add.

    4. Seleccione un subcampo, establezca el tipo de consulta que necesite, como TermQuery, e introduzca el valor que desea buscar.

    5. La ordenación está deshabilitada de forma predeterminada. Para ordenar los resultados por un campo específico, active Enable Sorting, agregue el campo de ordenación y configure el criterio correspondiente.

    6. La agregación también viene deshabilitada por defecto. Si necesita aplicar una agregación estadística sobre un campo, active Enable Aggregation, agregue el campo y defina los ajustes de agregación.

  4. Haga clic en OK.

    Los resultados aparecerán en la pestaña Index Management.

Uso de los SDK de Tablestore

Con un SDK puede consultar datos en campos anidados de uno o varios niveles. Además, durante la consulta anidada es posible usar la función de resaltado para destacar palabras clave en los resultados. Para obtener más información sobre el resaltado, consulte highlight.

Los siguientes SDK de Tablestore admiten consultas anidadas: Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, Tablestore SDK for Node.js, Tablestore SDK for .NET y Tablestore SDK for PHP. En este ejemplo se utiliza el SDK de Tablestore para Java.

Ejemplo de consulta anidada de un solo nivel

En el siguiente ejemplo se muestra cómo consultar los datos donde col_nested.nested_1 es tablestore. Aquí, col_nested es un campo anidado cuyas filas secundarias contienen las columnas nested_1 y nested_2.

private static void nestedQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    NestedQuery nestedQuery = new NestedQuery(); // Set the query type to NestedQuery.
    nestedQuery.setPath("col_nested"); // Set the path of the nested column.
    TermQuery termQuery = new TermQuery(); // Construct the subquery for NestedQuery.
    termQuery.setFieldName("col_nested.nested_1"); // Set the column name. Note that it includes the path of the nested column.
    termQuery.setTerm(ColumnValue.fromString("tablestore")); // Set the value to query.
    nestedQuery.setQuery(termQuery);
    nestedQuery.setScoreMode(ScoreMode.None);
    searchQuery.setQuery(nestedQuery);
    //searchQuery.setGetTotalCount(true); // Set this to return the total number of matched rows.

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // Use the columnsToGet parameter to specify the columns to return or to return all columns. If you do not set this parameter, only the primary key columns are returned by default.
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Set this to return all columns.
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Set this to return specified columns.
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Print the total number of matched rows, not the number of returned rows.
    System.out.println("Row: " + resp.getRows());
}

Ejemplo de consulta anidada multinivel

En el siguiente ejemplo se muestra cómo consultar los datos donde col_nested.nested_2.nested_2_2 es tablestore. En este caso, col_nested es un campo anidado cuyas filas secundarias incluyen las columnas nested_1 y nested_2. A su vez, la columna nested_2 es otro campo anidado con las columnas nested_2_1 y nested_2_2 en sus filas secundarias.

private static void nestedQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    NestedQuery nestedQuery = new NestedQuery(); // Set the query type to NestedQuery.
    nestedQuery.setPath("col_nested.nested_2"); // Set the path of the nested column, which is the parent path of the field to query.
    TermQuery termQuery = new TermQuery(); // Construct the subquery for NestedQuery.
    termQuery.setFieldName("col_nested.nested_2.nested_2_2"); // Set the column name, which is the full path of the field to query.
    termQuery.setTerm(ColumnValue.fromString("tablestore")); // Set the value to query.
    nestedQuery.setQuery(termQuery);
    nestedQuery.setScoreMode(ScoreMode.None);
    searchQuery.setQuery(nestedQuery);
    //searchQuery.setGetTotalCount(true); // Set this to return the total number of matched rows.

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // Use the columnsToGet parameter to specify the columns to return or to return all columns. If you do not set this parameter, only the primary key columns are returned by default.
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Set this to return all columns.
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Set this to return specified columns.
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Print the total number of matched rows, not the number of returned rows.
    System.out.println("Row: " + resp.getRows());
}

Ejemplo de consulta anidada compuesta

Requisitos de la consulta

Suponga que una tabla de datos tiene dos columnas: col_string (String) y col_nested (String). La columna col_nested almacena datos en formato JSON. La siguiente tabla muestra datos de ejemplo de esta tabla.

Nota

Se agregó una columna de número de fila a cada registro únicamente con fines ilustrativos.

Número de fila

col_string

col_nested

1

a

[{"col_keyword": "tablestore"},{"col_keyword": "searchindex","col_long": 1}]

2

b

[{"col_keyword": "tablestore","col_long": 1}]

3

c

[{"col_keyword": "searchindex"},{"col_long": 1}]

Considere los siguientes requisitos de consulta para los datos de la columna col_nested:

  • Una sola fila secundaria cumple varias condiciones de consulta

    Por ejemplo, puede buscar las filas donde una misma fila secundaria de la columna col_nested cumpla estas dos condiciones: que el valor de col_keyword sea tablestore y que col_long no esté vacío.

  • Distintas filas secundarias cumplen varias condiciones de consulta

    Por ejemplo, puede buscar las filas donde una fila secundaria de col_nested tenga el valor tablestore en col_keyword, mientras que otra fila secundaria distinta tenga un valor no vacío en col_long.

Para cubrir estos requisitos, siga estos pasos:

  1. Cree un índice de búsqueda para la tabla de datos y defina la columna col_nested como tipo anidado dentro de dicho índice.

    La columna col_nested contiene dos subcampos: col_keyword (Keyword) y col_long (Long).

  2. Utilice el método de consulta adecuado según sus necesidades.

    • Si necesita que una sola fila secundaria cumpla varias condiciones, configure varios BoolQueries dentro de un NestedQuery.

    • Si requiere que distintas filas secundarias cumplan diferentes condiciones, establezca varias condiciones NestedQuery dentro de un BoolQuery.

A continuación se muestran ejemplos de consulta de datos. Consulte el que coincida con sus requisitos.

Ejemplo de consulta donde una sola fila secundaria cumple varias condiciones

En el siguiente ejemplo se muestra cómo buscar las filas donde una misma fila secundaria de la columna col_nested cumple ambas condiciones: `col_nested.col_keyword es "tablestore" y `col_nested.col_long no está vacío.

Según los datos de ejemplo, solo la información de la fila 2 satisface estas condiciones.

public static void nestedQuery(SyncClient client) {
    // Condition 1: The value of the col_keyword column in the child row of col_nested must be "tablestore".
    TermQuery termQuery = new TermQuery();
    termQuery.setFieldName("col_nested.col_keyword");
    termQuery.setTerm(ColumnValue.fromString("tablestore"));

    // Condition 2: The col_long column in the child row of col_nested must not be empty.
    ExistsQuery existsQuery = new ExistsQuery();
    existsQuery.setFieldName("col_nested.col_long");

    // Use the AND condition of BoolQuery to query for child rows that meet both conditions.
    List<Query> mustQueries = new ArrayList<>();
    mustQueries.add(termQuery);
    mustQueries.add(existsQuery);
    BoolQuery boolQuery = new BoolQuery();
    boolQuery.setMustQueries(mustQueries);

    // Set a BoolQuery within the NestedQuery to require a child row to meet multiple query conditions at the same time.
    NestedQuery nestedQuery = new NestedQuery();    // Set the query type to NestedQuery.
    nestedQuery.setPath("col_nested");   // Set the path of the nested column, which is the parent path of the field to query.
    nestedQuery.setQuery(boolQuery);
    nestedQuery.setScoreMode(ScoreMode.None);

    SearchQuery searchQuery = new SearchQuery();
    searchQuery.setQuery(nestedQuery);

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // Use the columnsToGet parameter to specify the columns to return or to return all columns. If you do not set this parameter, only the primary key columns are returned by default.
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Set this to return all columns.
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Set this to return specified columns.
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Print the total number of matched rows, not the number of returned rows.
    System.out.println("Row: " + resp.getRows());
}

Ejemplo de consulta donde distintas filas secundarias cumplen varias condiciones

El siguiente ejemplo busca las filas donde los objetos anidados del campo col_nested cumplen dos condiciones: col_nested.col_keyword es "tablestore" y col_nested.col_long no está vacío.

Con base en los datos de ejemplo, tanto la fila 1 como la fila 2 satisfacen estas condiciones.

public static void nestedQuery(SyncClient client) {
        // Condition 1: The value of the col_keyword column in the child row of col_nested must be "tablestore".
        TermQuery termQuery = new TermQuery();
        termQuery.setFieldName("col_nested.col_keyword");
        termQuery.setTerm(ColumnValue.fromString("tablestore"));
        NestedQuery nestedTermQuery = new NestedQuery();
        nestedTermQuery.setPath("col_nested");
        nestedTermQuery.setScoreMode(ScoreMode.None);
        nestedTermQuery.setQuery(termQuery);

        // Condition 2: The col_long column in the child row of col_nested must not be empty.
        ExistsQuery existsQuery = new ExistsQuery();
        existsQuery.setFieldName("col_nested.col_long");
        NestedQuery nestedExistsQuery = new NestedQuery();
        nestedExistsQuery.setPath("col_nested");
        nestedExistsQuery.setScoreMode(ScoreMode.None);
        nestedExistsQuery.setQuery(existsQuery);

        // Use the AND condition of BoolQuery to query for rows that meet the preceding conditions.
        List<Query> mustQueries = new ArrayList<>();
        mustQueries.add(nestedTermQuery);
        mustQueries.add(nestedExistsQuery);

        // The BoolQuery includes multiple NestedQuery conditions. The query is successful if different child rows meet the respective query conditions.
        BoolQuery boolQuery = new BoolQuery();
        boolQuery.setMustQueries(mustQueries);

        SearchQuery searchQuery = new SearchQuery();
        searchQuery.setQuery(boolQuery);

        SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
        // Use the columnsToGet parameter to specify the columns to return or to return all columns. If you do not set this parameter, only the primary key columns are returned by default.
        //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
        //columnsToGet.setReturnAll(true); // Set this to return all columns.
        //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Set this to return specified columns.
        //searchRequest.setColumnsToGet(columnsToGet);

        SearchResponse resp = client.search(searchRequest);
        //System.out.println("TotalCount: " + resp.getTotalCount()); // Print the total number of matched rows, not the number of returned rows.
        System.out.println("Row: " + resp.getRows());
    }

Ejemplo de uso de resumen y resaltado en una consulta anidada

En el siguiente ejemplo se muestra cómo usar NestedQuery para buscar datos donde el valor del subcampo Level1_Col1_Nested, dentro del campo anidado Col_Nested, coincida con `hangzhou shanghai. El término buscado aparece resaltado en los resultados devueltos.

/**
 * Use summary and highlighting in a NestedQuery. Set parameters using innerHits.
 */
public static void nestedQueryWithHighlighting(SyncClient client) {
        SearchRequest searchRequest = SearchRequest.newBuilder()
                .tableName("<TABLE_NAME>")
                .indexName("<SEARCH_INDEX_NAME>")
                .returnAllColumnsFromIndex(true)
                .searchQuery(SearchQuery.newBuilder()
                        .limit(5)
                        .query(QueryBuilders.nested()
                                .path("Col_Nested")
                                .scoreMode(ScoreMode.Min)
                                .query(QueryBuilders.match("Col_Nested.Level1_Col1_Nested", "hangzhou shanghai"))
                                .innerHits(InnerHits.newBuilder()
                                        .highlight(Highlight.newBuilder()
                                                .addFieldHighlightParam("Col_Nested.Level1_Col1_Nested", HighlightParameter.newBuilder().build())
                                                .build())
                                        .build()))
                        .build())
                .build();
        SearchResponse resp = client.search(searchRequest);

        // Print the highlighted results.
        printSearchHit(resp.getSearchHits(), "");
}

/**
 * Print the content of searchHit.
 * @param searchHits The search hits.
 * @param prefix The prefix to add when printing nested structures to show hierarchical information.
 */
private static void printSearchHit(List<SearchHit> searchHits, String prefix) {
    for (SearchHit searchHit : searchHits) {
        if (searchHit.getScore() != null) {
            System.out.printf("%s Score: %s\n", prefix, searchHit.getScore());
        }

        if (searchHit.getOffset() != null) {
            System.out.printf("%s Offset: %s\n", prefix, searchHit.getOffset());
        }

        if (searchHit.getRow() != null) {
            System.out.printf("%s Row: %s\n", prefix, searchHit.getRow().toString());
        }

        // Print the highlighted fragments for each field.
        if (searchHit.getHighlightResultItem() != null) {
            System.out.printf("%s Highlight: \n", prefix);
            StringBuilder strBuilder = new StringBuilder();
            for (Map.Entry<String, HighlightField> entry : searchHit.getHighlightResultItem().getHighlightFields().entrySet()) {
                strBuilder.append(entry.getKey()).append(":").append("[");
                strBuilder.append(StringUtils.join(",", entry.getValue().getFragments())).append("]\n");
            }
            System.out.printf("%s   %s", prefix, strBuilder);
        }

        // Highlighted results for the nested type.
        for (SearchInnerHit searchInnerHit : searchHit.getSearchInnerHits().values()) {
            System.out.printf("%s Path: %s\n", prefix, searchInnerHit.getPath());
            System.out.printf("%s InnerHit: \n", prefix);
            printSearchHit(searchInnerHit.getSubSearchHits(), prefix + "    ");
        }

        System.out.println();
    }
}

Suponga que el campo anidado multinivel Col_Nested incluye dos subcampos: Level1_Col1_Text (Text) y Level1_Col2_Nested (Nested). A su vez, el campo anidado Level1_Col2_Nested contiene el subcampo Level2_Col1_Text.

En el siguiente ejemplo se muestra cómo agregar un BoolQuery dentro de un NestedQuery para aplicar las funciones de resumen y resaltado tanto en el subcampo Level1_Col1_Text del campo Col_Nested como en el subcampo Level2_Col1_Text ubicado bajo Level1_Col2_Nested.

public static void nestedQueryWithHighlighting(SyncClient client) {
    SearchRequest searchRequest = SearchRequest.newBuilder()
            .tableName("<TABLE_NAME>")
            .indexName("<SEARCH_INDEX_NAME>")
            .returnAllColumnsFromIndex(true)
            .searchQuery(SearchQuery.newBuilder()
                    .limit(5)
                    .query(QueryBuilders.nested()
                            .path("Col_Nested")
                            .scoreMode(ScoreMode.Min)
                            .query(QueryBuilders.bool()
                                    .should(QueryBuilders.match("Col_Nested.Level1_Col1_Text", "hangzhou shanghai"))
                                    .should(QueryBuilders.nested()
                                            .path("Col_Nested.Level1_Col2_Nested")
                                            .scoreMode(ScoreMode.Min)
                                            .query(QueryBuilders.match("Col_Nested.Level1_Col2_Nested.Level2_Col1_Text", "hangzhou shanghai"))
                                            .innerHits(InnerHits.newBuilder()
                                                    .highlight(Highlight.newBuilder()
                                                            .addFieldHighlightParam("Col_Nested.Level1_Col2_Nested.Level2_Col1_Text", HighlightParameter.newBuilder().build())
                                                            .build())
                                                    .build())))
                            .innerHits(InnerHits.newBuilder()
                                    .sort(new Sort(Arrays.asList(
                                            new ScoreSort(),
                                            new DocSort()
                                    )))
                                    .highlight(Highlight.newBuilder()
                                            .addFieldHighlightParam("Col_Nested.Level1_Col1_Text", HighlightParameter.newBuilder().build())
                                            .build())
                                    .build()))
                    .build())
            .build();
    SearchResponse resp = client.search(searchRequest);
    // Print the highlighted results.
    printSearchHit(resp.getSearchHits(), "");
}

/**
 * Print the content of searchHit.
 * @param searchHits The search hits.
 * @param prefix The prefix to add when printing nested structures to show hierarchical information.
 */
private static void printSearchHit(List<SearchHit> searchHits, String prefix) {
    for (SearchHit searchHit : searchHits) {
        if (searchHit.getScore() != null) {
            System.out.printf("%s Score: %s\n", prefix, searchHit.getScore());
        }

        if (searchHit.getOffset() != null) {
            System.out.printf("%s Offset: %s\n", prefix, searchHit.getOffset());
        }

        if (searchHit.getRow() != null) {
            System.out.printf("%s Row: %s\n", prefix, searchHit.getRow().toString());
        }

        // Print the highlighted fragments for each field.
        if (searchHit.getHighlightResultItem() != null) {
            System.out.printf("%s Highlight: \n", prefix);
            StringBuilder strBuilder = new StringBuilder();
            for (Map.Entry<String, HighlightField> entry : searchHit.getHighlightResultItem().getHighlightFields().entrySet()) {
                strBuilder.append(entry.getKey()).append(":").append("[");
                strBuilder.append(StringUtils.join(",", entry.getValue().getFragments())).append("]\n");
            }
            System.out.printf("%s   %s", prefix, strBuilder);
        }

        // Highlighted results for the nested type.
        for (SearchInnerHit searchInnerHit : searchHit.getSearchInnerHits().values()) {
            System.out.printf("%s Path: %s\n", prefix, searchInnerHit.getPath());
            System.out.printf("%s InnerHit: \n", prefix);
            printSearchHit(searchInnerHit.getSubSearchHits(), prefix + "    ");
        }

        System.out.println();
    }
}

Facturación

Consultar datos mediante un Search Index consume capacidad de lectura. Para obtener más información, consulte Search Index metering and billing.

Preguntas frecuentes

Referencias