Todos os produtos
Search
Central de documentação

Tablestore:Tipo de dados IP

Última atualização: Jun 30, 2026

O tipo de dados IP em índices de busca armazena e consulta endereços IPv4 e IPv6 para cenários de análise de logs, segurança de rede e geolocalização.

Importante

Para usar o tipo de dados IP em um índice de busca, e entre em contato com o suporte técnico do Tablestore para ativar o recurso.

Como funciona

Mapeie um campo String da tabela de dados para o tipo IP no índice de busca. O tipo de dados IP oferece três métodos de consulta: consulta de termo, consulta de intervalo e consulta composta. Uma estrutura de índice especializada para endereços IP fornece armazenamento unificado e recuperação eficiente para IPv4, IPv6 e seus formatos variantes.

Formatos de IP compatíveis

O tipo de dados IP aceita os seguintes formatos de endereço IP.

Formato de endereço IP

Descrição

IPv4

Formato padrão de endereço IPv4: quatro grupos de números decimais separados por pontos (.).

127.0.0.1

192.168.1.1

IPv6

Formato padrão de endereço IPv6: oito grupos de quatro dígitos hexadecimais separados por dois pontos (:).

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

Formato IPv6 abreviado

Notação abreviada padrão para endereços IPv6.

FFFF:192.168.1.1

Endereço IPv6 mapeado para IPv4

Formato de endereço IPv6 mapeado para IPv4. Permite consultas usando o formato IPv4.

Nota

Por exemplo, se o valor da coluna column_ip em uma linha for ::FFFF:192.168.1.1, uma consulta de termo com column_ip = 192.168.1.1 corresponderá a essa linha.

::FFFF:192.168.1.1

Cenários de consulta

As consultas do tipo IP oferecem três métodos, cada um adequado para diferentes cenários de negócios.

Tipo de consulta

Descrição

Implementação

Caso de uso

Consulta de termo

Corresponde a um endereço IP específico.

Especifique o endereço IP de destino em uma consulta de termo.

  • Análise de logs: rastreamento de comportamento do usuário e localização de falhas.

  • Segurança de rede: validação de lista de bloqueios e lista de permissões, além de auditoria de autenticação de identidade.

Consulta de intervalo

Corresponde a dados dentro de um intervalo de endereços IP especificado.

  • (Recomendado) Especifique a notação CIDR em uma consulta de termo.

  • Defina um intervalo de endereços IP em uma consulta de intervalo.

  • Geolocalização: geocerca de IP e análise de topologia de rede.

  • Controle de acesso: proteção de segurança e gerenciamento de sub-redes CIDR.

Consulta composta

Combina condições de endereço IP com outras dimensões.

Use o recurso de consulta composta para combinar múltiplas condições.

  • Consultas multidimensionais: combinação de endereço IP com dimensões de tempo ou comportamento do usuário.

Usar um campo do tipo IP

Os SDKs Java e Go do Tablestore aceitam campos do tipo IP. O exemplo a seguir usa o SDK para Java. Use a versão 5.17.6 ou posterior do SDK Java do Tablestore.

Etapa 1: Crie um índice de busca que contenha um tipo IP

Ao criar um índice de busca, mapeie o campo String destinado a consultas de IP para o 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);
}

Etapa 2: Gravar dados de IP na tabela de dados

Grave dados de endereço IP no 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));
    }
}

Etapa 3: Verifique a configuração

  • Verifique uma consulta de termo 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());
    }
  • Verifique uma consulta de intervalo 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());
    }

Melhores práticas

  • Especifique ambos os limites nas consultas de intervalo

    Sempre especifique os limites superior e inferior do intervalo de endereços IP. Se a tabela de dados contiver endereços IPv4 e IPv6, uma consulta com apenas uma condição de limite para um endereço IPv4 poderá retornar endereços IPv6 indesejados.

  • Prefira a notação CIDR

    Para consultas de intervalo de IP, use a notação CIDR, como 192.168.1.1/24. A notação CIDR é mais concisa e precisa do que as consultas de intervalo tradicionais, ajudando a prevenir erros de condição de limite.