O Tablestore SDK for Java permite criar um índice canário a partir de um índice de pesquisa source para adicionar ou remover campos, alterar tipos de campo, campos de roteamento e configurações de pré-ordenação sem interromper leituras ou gravações.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize o cliente.
Descrição
Chame createSearchIndex para crie um índice canário com o novo esquema completo a partir de um índice source. Esse processo não interrompe as leituras ou gravações da tabela, e o código de consulta que usa o nome do índice source não precisa de alteração. O processo consiste nas seguintes etapas:
public CreateSearchIndexResponse createSearchIndex(CreateSearchIndexRequest request)
Crie um índice canário a partir do índice source e envie o novo esquema completo.
Aguarde a sincronização dos dados existentes e incrementais até que o índice canário alcance o índice source.
Distribua opcionalmente o tráfego de consultas entre os índices source e canário para testes A/B.
Após validar os resultados das consultas, troque os índices para que o nome do índice source aponte para o novo esquema.
Monitore o índice durante um período de estabilização após a troca e exclua o índice canário que aponta para o esquema antigo.
O índice canário é temporário e usado durante a modificação do esquema; seu nome deve terminar com
_reindex. Como os mapeamentos do índice e os pesos de tráfego mudam durante o processo, não consulte dados pelo nome do índice canário.É possível reconstruir até cinco índices simultaneamente. Antes de iniciar outro lote, aguarde até que os índices canário do lote atual alcancem seus índices source ou concluam as trocas de índice.
Criar um índice canário
O exemplo abaixo altera col1 de Long para Keyword, remove col2, adiciona o campo Long col3 e define id como campo de roteamento.
String tableName = "example_table";
String sourceIndexName = "example_index";
String reindexName = "example_index_reindex";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
new FieldSchema("id", FieldType.KEYWORD),
new FieldSchema("col1", FieldType.KEYWORD),
new FieldSchema("col3", FieldType.LONG)));
IndexSetting indexSetting = new IndexSetting();
indexSetting.setRoutingFields(Arrays.asList("id"));
indexSchema.setIndexSetting(indexSetting);
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(reindexName);
request.setSourceIndexName(sourceIndexName);
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);
Após o êxito da solicitação, query the canary index information. Verifique se o status é RUNNING, se brotherIndexName contém o nome do índice source e se o novo esquema está correto. O estado RUNNING indica a criação do índice canário, mas não significa que ele já alcançou o índice source.
Validar e trocar os índices
Realize testes A/B e troque os índices somente depois que o console indicar que a troca do índice canário é segura. Após a troca, o nome do índice source apontará para o novo esquema e o nome do índice canário apontará para o esquema antigo. Valide o índice e monitore-o durante um período de estabilização antes de excluir o índice canário.
Use o Tablestore console para verifique o progresso da sincronização, definir pesos de tráfego, trocar os índices e exclua o índice canário. Para obter instruções, consulte Dynamically modify a search index schema.
Parâmetros
CreateSearchIndexRequest contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
|
Nome da tabela. |
|
indexName (obrigatório) |
|
Nome do índice canário. Deve terminar com |
|
indexSchema (obrigatório) |
|
Novo esquema completo do índice canário. |
|
sourceIndexName (obrigatório) |
|
Índice source no qual a reconstrução se baseia. O Tablestore cria o índice canário a partir deste índice e sincroniza os dados existentes e incrementais da tabela para o índice canário. |
|
timeToLive (opcional) |
|
TTL dos dados do índice canário em segundos. Para especifique o TTL em dias, chame |
Esquema do índice
indexSchema é do tipo IndexSchema e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
fieldSchemas (obrigatório) |
|
Lista completa de campos após a alteração. Adicione, remova ou modifique campos nesta lista para alterar os campos do índice. |
|
indexSetting (opcional) |
|
Configurações do índice. Use |
|
indexSort (opcional) |
|
Configurações de pré-ordenação do índice. |
Para estruturas completas de parâmetros e restrições de campos de índice, configurações de índice e configurações de pré-ordenação, consulte Create a search index.