Todos los productos
Search
Centro de documentos

Tablestore:Tipo de datos IP

Última actualización: Sep 03, 2026

El tipo de datos IP en los índices de búsqueda permite almacenar y consultar direcciones IPv4 e IPv6 para escenarios de análisis de registros, seguridad de red y geolocalización.

Importante

Para usar el tipo de datos IP en un índice de búsqueda, y póngase en contacto con el soporte técnico de Tablestore para habilitar esta función.

Funcionamiento

Asigne un campo String de su tabla de datos al tipo IP en el índice de búsqueda. El tipo de datos IP admite tres métodos de consulta: consulta de término, consulta de rango y consulta compuesta. Una estructura de índice de direcciones IP especializada proporciona almacenamiento unificado y recuperación eficiente para IPv4, IPv6 y sus formatos variantes.

Formatos de IP compatibles

El tipo de datos IP admite los siguientes formatos de dirección IP.

Formato de dirección IP

Descripción

IPv4

Formato estándar de dirección IPv4: cuatro grupos de números decimales separados por puntos (.).

127.0.0.1

192.168.1.1

IPv6

Formato estándar de dirección IPv6: ocho grupos de cuatro dígitos hexadecimales separados por dos puntos (:).

FC00:0000:130F:0000:0000:09C0:876A:130B

Formato IPv6 abreviado

Notación abreviada estándar para direcciones IPv6.

FFFF:192.168.1.1

Dirección IPv6 asignada a IPv4

Formato de dirección IPv6 asignada a IPv4. Admite consultas mediante el formato IPv4.

Nota

Por ejemplo, si el valor de la columna column_ip en una fila es ::FFFF:192.168.1.1, una consulta de término con column_ip = 192.168.1.1 coincidirá con dicha fila.

::FFFF:192.168.1.1

Escenarios de consulta

Las consultas de tipo IP admiten tres métodos, cada uno adecuado para diferentes escenarios empresariales.

Tipo de consulta

Descripción

Implementación

Caso de uso

Consulta de término

Coincide con una dirección IP específica.

Especifique la dirección IP de destino en una consulta de término.

  • Análisis de registros: seguimiento del comportamiento del usuario y localización de fallas.

  • Seguridad de red: validación de listas de bloqueados y permitidos, y auditoría de autenticación de identidad.

Consulta de rango

Coincide con datos dentro de un rango de direcciones IP especificado.

  • (Recomendado) Especifique la notación CIDR en una consulta de término.

  • Defina un rango de direcciones IP en una consulta de rango.

  • Geolocalización: perimetraje geográfico de IP y análisis de topología de red.

  • Control de acceso: protección de seguridad y gestión de subredes CIDR.

Consulta compuesta

Combina condiciones de dirección IP con otras dimensiones.

Use la función de consulta compuesta para combinar varias condiciones.

  • Consultas multidimensionales: combinación de dirección IP con dimensiones temporales o comportamiento del usuario.

Uso de un campo de tipo IP

Los SDK de Java y Go de Tablestore admiten campos de tipo IP. A continuación se muestra un ejemplo que usa el SDK de Java. Use la versión 5.17.6 o posterior del SDK de Java de Tablestore.

Paso 1: Cree un índice de búsqueda que contenga un tipo IP

Al crear un índice de búsqueda, asigne el campo String para consultas de IP al tipo IP.

private static void createSearchIndex(SyncClient client) {
    CreateSearchIndexRequest request = new CreateSearchIndexRequest();
    request.setTableName(TABLE_NAME);
    request.setIndexName(INDEX_NAME);
    IndexSchema indexSchema = new IndexSchema();
    indexSchema.setFieldSchemas(Arrays.asList(
        new FieldSchema("Col_Keyword", FieldType.KEYWORD).setIndex(true).setEnableSortAndAgg(true),
        // Set the index for the Col_Ip column to the IP type.
        new FieldSchema("Col_Ip", FieldType.IP).setIndex(true).setEnableSortAndAgg(true)
    ));
    request.setIndexSchema(indexSchema);
    client.createSearchIndex(request);
}

Paso 2: Escribir datos IP en la tabla de datos

Escriba datos de direcciones IP en el campo configurado como tipo IP.

private static void putRow(SyncClient client) {
    String[] keywords = { "Router", "Phone", "PC1", "PC2", "Home Bot" };
    for (int i = 0; i < 5; i++) {
        // Build the primary key.
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn(PRIMARY_KEY_NAME_1, PrimaryKeyValue.fromString("pk1" + i));
        PrimaryKey primaryKey = primaryKeyBuilder.build();

        RowPutChange rowPutChange = new RowPutChange(TABLE_NAME, primaryKey);

        // Add an attribute column.
        rowPutChange.addColumn("Col_Keyword", ColumnValue.fromString(keywords[i]));
        // Add an attribute column and write the IP address.
        rowPutChange.addColumn("Col_Ip", ColumnValue.fromString("192.168.1." + i));
        client.putRow(new PutRowRequest(rowPutChange));
    }
}

Paso 3: Compruebe la configuración

  • Comprobar una consulta de término de IP

    /**
     * To query for an exact IP address, use TermQuery.
     */
    private static void searchExactIp(SyncClient client) {
        SearchQuery searchQuery = new SearchQuery();
        TermQuery query = QueryBuilders.term("Col_Ip", "192.168.1.1").build();
        searchQuery.setQuery(query);
        searchQuery.setLimit(100);
        SearchRequest searchRequest = new SearchRequest(TABLE_NAME, INDEX_NAME, searchQuery);
        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
        columnsToGet.setReturnAll(true);
        searchRequest.setColumnsToGet(columnsToGet);
        SearchResponse resp = client.search(searchRequest);
        System.out.println("TotalCount: " + resp.getTotalCount());
        System.out.println("Row: " + resp.getRows());
    }
  • Comprobar una consulta de rango de IP

    /**
     * To query for an IP address range, you can use CIDR notation in a TermQuery or use a RangeQuery.
     */
    private static void searchIpSegment(SyncClient client) {
        SearchQuery searchQuery = new SearchQuery();
        // Query for an IP range using CIDR notation.
        TermQuery query = QueryBuilders.term("Col_Ip", "192.168.1.1/24").build();
        // Alternatively, use a RangeQuery to query for an IP range.
        // RangeQuery query = QueryBuilders.range("Col_Ip").greaterThanOrEqual("192.168.1.0").lessThanOrEqual("192.168.1.255").build();
        searchQuery.setQuery(query);
        searchQuery.setLimit(100);
        SearchRequest searchRequest = new SearchRequest(TABLE_NAME, INDEX_NAME, searchQuery);
    
        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
        columnsToGet.setReturnAll(true);
        searchRequest.setColumnsToGet(columnsToGet);
    
        SearchResponse resp = client.search(searchRequest);
        System.out.println("TotalCount: " + resp.getTotalCount());
        System.out.println("Row: " + resp.getRows());
    }

Mejores prácticas

  • Especificar ambos límites en las consultas de rango

    Especifique siempre los límites superior e inferior del rango de direcciones IP. Si su tabla de datos contiene direcciones IPv4 e IPv6, una consulta con solo una condición de límite para una dirección IPv4 podría devolver direcciones IPv6 no deseadas.

  • Preferir la notación CIDR

    Para consultas de rango de IP, use la notación CIDR, como 192.168.1.1/24. La notación CIDR es más concisa y precisa que las consultas de rango tradicionales, y ayuda a prevenir errores en las condiciones de límite.