Use o método CreateSearchIndex para criar um ou mais índices de pesquisa em uma tabela de dados. Ao criar um índice de pesquisa, adicione os campos que deseja consultar. Também é possível definir opções avançadas, como campos de roteamento e pré-ordenação.
Pré-requisitos
Cliente do Tablestore inicializado. Para obter mais informações, consulte Inicializar um cliente do Tablestore.
-
Tabela de dados criada que atenda às seguintes condições. Para obter mais informações, consulte Criar uma tabela de dados.
Número máximo de versões definido como 1.
Tempo de vida (TTL) definido como -1 ou operação UpdateRow desativada para a tabela de dados.
Observações de uso
Os tipos de dados dos campos no índice de pesquisa devem corresponder aos tipos de dados dos campos na tabela de dados.
Para definir o TTL de um índice de pesquisa com valor diferente de -1, desative a operação UpdateRow na tabela de dados. O TTL do índice de pesquisa deve ser menor ou igual ao TTL da tabela de dados. Para obter mais informações, consulte Gerenciamento de ciclo de vida.
Parâmetros
Para criar um índice de pesquisa, especifique o nome da tabela (tableName), o nome do índice (indexName) e o esquema do índice (schema). O esquema inclui esquemas de campo (fieldSchemas), configurações de índice (indexSetting) e definições de pré-ordenação do índice (indexSort).
|
Parâmetro |
Descrição |
|
tableName |
Nome da tabela de dados. |
|
indexName |
Nome do índice de pesquisa. |
|
fieldSchemas |
Lista de esquemas de campo. Cada esquema contém os seguintes parâmetros:
|
|
indexSetting |
Configurações do índice, incluindo a definição routingFields. routingFields (opcional): Campos de roteamento personalizados. Selecione colunas de chave primária como campos de roteamento. Geralmente, basta definir apenas um. Se houver várias chaves de roteamento, o sistema concatenará seus valores em um único valor. Durante a gravação, o sistema distribui os dados do índice com base nos valores dos campos de roteamento. Registros com mesmos valores de campo de roteamento ficam na mesma partição de dados. |
|
indexSort |
Definições de pré-ordenação do índice, incluindo a configuração sorters. Se omitido, os dados serão ordenados pela chave primária por padrão. Nota
Índices com campos Nested não suportam indexSort. Nenhuma pré-ordenação ocorre. sorters (obrigatório): método de pré-ordenação do índice. Suporta ordenação por chave primária ou por valor de campo. Para obter mais informações, consulte Ordenação e paginação.
|
|
timeToLive |
Opcional. Tempo de vida (TTL) dos dados, correspondente ao período de retenção. Unidade: segundos. Valor padrão: -1 (dados nunca expiram). O valor mínimo de TTL é 86400 segundos (um dia). Quando o período de retenção excede o TTL, o sistema limpa automaticamente os dados expirados. |
Exemplos
Criar um índice de pesquisa e definir um tokenizador
O exemplo a seguir cria um índice de pesquisa com as colunas: pic_id (Keyword), count (Long), time_stamp (Long), pic_description (Text), col_vector (Vector), pos (Geo-point), pic_tag (Nested), date (Date), analyzer_single_word (Text), analyzer_split (Text) e analyzer_fuzzy (Text). A coluna pic_tag possui dois subcampos: sub_tag_name (Keyword) e tag_name (Keyword). A coluna analyzer_single_word utiliza tokenização de palavra única; analyzer_split usa tokenização por delimitador; e analyzer_fuzzy emprega tokenização difusa.
client.createSearchIndex({
tableName: "<TABLE_NAME>", // Set the table name.
indexName: "<INDEX_NAME>", // Set the search index name.
schema: {
fieldSchemas: [
{
fieldName: "pic_id",
fieldType: TableStore.FieldType.KEYWORD, // Set the field name and field type.
index: true, // Enable indexing.
enableSortAndAgg: true, // Enable sorting and aggregation.
isAnArray: false
},
{
fieldName: "count",
fieldType: TableStore.FieldType.LONG,
index: true,
enableSortAndAgg: true,
isAnArray: false
},
{
fieldName: "time_stamp",
fieldType: TableStore.FieldType.LONG,
index: true,
enableSortAndAgg: false,
isAnArray: false,
},
{
fieldName: "pic_description",
fieldType: TableStore.FieldType.TEXT,
index: true,
enableSortAndAgg: false,
isAnArray: false,
},
{
fieldName: "col_vector",
fieldType: TableStore.FieldType.VECTOR,
index: true,
isAnArray: false,
vectorOptions: {
dataType: TableStore.VectorDataType.VD_FLOAT_32,
dimension: 4,
metricType: TableStore.VectorMetricType.VM_COSINE,
}
},
{
fieldName: "pos",
fieldType: TableStore.FieldType.GEO_POINT,
index: true,
enableSortAndAgg: true,
isAnArray: false,
},
{
fieldName: "pic_tag",
fieldType: TableStore.FieldType.NESTED,
index: false,
enableSortAndAgg: false,
fieldSchemas: [
{
fieldName: "sub_tag_name",
fieldType: TableStore.FieldType.KEYWORD,
index: true,
enableSortAndAgg: true,
},
{
fieldName: "tag_name",
fieldType: TableStore.FieldType.KEYWORD,
index: true,
enableSortAndAgg: true,
}
]
},
{
fieldName: "date",
fieldType: TableStore.FieldType.DATE,
index: true,
enableSortAndAgg: true,
isAnArray: false,
dateFormats: ["yyyy-MM-dd'T'HH:mm:ss.SSSSSS"],
},
{
fieldName: "analyzer_single_word",
fieldType: TableStore.FieldType.TEXT,
analyzer: "single_word",
index: true,
enableSortAndAgg: false,
isAnArray: false,
analyzerParameter: {
caseSensitive: true,
delimitWord: false,
}
},
{
fieldName: "analyzer_split",
fieldType: TableStore.FieldType.TEXT,
analyzer: "split",
index: true,
enableSortAndAgg: false,
isAnArray: false,
analyzerParameter: {
delimiter: ",",
}
},
{
fieldName: "analyzer_fuzzy",
fieldType: TableStore.FieldType.TEXT,
analyzer: "fuzzy",
index: true,
enableSortAndAgg: false,
isAnArray: false,
analyzerParameter: {
minChars: 1,
maxChars: 5,
}
},
],
indexSetting: { // The configuration options of the index.
"routingFields": ["count", "pic_id"], // Only primary key columns can be set as routing fields.
"routingPartitionSize": null
},
//indexSort: {// indexSort is not supported for indexes that contain Nested fields. No pre-sorting is performed.
//sorters: [
// { // If you do not set indexSort, the data is sorted by primary key in ascending order by default.
// primaryKeySort: {
// order: TableStore.SortOrder.SORT_ORDER_ASC
// }
// },
//{
// fieldSort: {
// fieldName: "Col_Keyword",
// order: TableStore.SortOrder.SORT_ORDER_DESC // Set the sorting order for indexSort.
// }
//}
//]
//},
timeToLive: 1000000, // Unit: seconds.
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:',data);
});
Criar um índice de pesquisa e ativar o destaque
O exemplo abaixo cria um índice de pesquisa com destaque ativado. O índice possui três campos: k (Keyword), t (Text) e n (Nested). O campo n contém três subcampos: nk (Keyword), nl (Long) e nt (Text). O destaque está habilitado para o campo t e para o subcampo nt.
client.createSearchIndex({
tableName: "<TABLE_NAME>", // Set the table name.
indexName: "<SEARCH_INDEX_NAME>", // Set the search index name.
schema: {
fieldSchemas: [
{
fieldName: "k",
fieldType: TableStore.FieldType.KEYWORD, // Set the field name and field type.
index: true, // Enable indexing.
enableSortAndAgg: true, // Enable sorting and aggregation.
isAnArray: false
},
{
fieldName: "t",
fieldType: TableStore.FieldType.TEXT,
index: true,
enableSortAndAgg: false,
enableHighlighting: true, // Enable highlighting for the field.
isAnArray: false,
},
{
fieldName: "n",
fieldType: TableStore.FieldType.NESTED,
index: false,
enableSortAndAgg: false,
fieldSchemas: [
{
fieldName: "nk",
fieldType: TableStore.FieldType.KEYWORD,
index: true,
enableSortAndAgg: true,
},
{
fieldName: "nl",
fieldType: TableStore.FieldType.LONG,
index: true,
enableSortAndAgg: true,
},
{
fieldName: "nt",
fieldType: TableStore.FieldType.TEXT,
index: true,
enableSortAndAgg: false,
enableHighlighting: true, // Enable highlighting for the field.
},
]
},
],
indexSetting: { // The configuration options of the index.
"routingFields": ["id"], // Only primary key columns can be set as routing fields.
"routingPartitionSize": null
},
//indexSort: {// indexSort is not supported for indexes that contain Nested fields. No pre-sorting is performed.
//sorters: [
// { // If you do not set indexSort, the data is sorted by primary key in ascending order by default.
// primaryKeySort: {
// order: TableStore.SortOrder.SORT_ORDER_ASC
// }
// },
//{
// fieldSort: {
// fieldName: "Col_Keyword",
// order: TableStore.SortOrder.SORT_ORDER_DESC // Set the sorting order for indexSort.
// }
//}
//]
//},
timeToLive: 1000000, // Unit: seconds.
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:',data);
});
Perguntas frequentes
Referências
Após criar um índice de pesquisa, selecione um tipo de consulta para buscas multidimensionais. Os tipos suportados incluem consulta de termo, consulta de termos, consulta match all, consulta match, consulta match phrase, consulta de prefixo, consulta de intervalo, consulta curinga, consulta geográfica, consulta booleana, pesquisa vetorial, consulta aninhada e consulta exists.
Ao consultar dados, aplique ordenação e paginação, destaque ou colapso (deduplicação) no conjunto de resultados.
Depois de criar um índice de pesquisa, gerencie-o conforme necessário. As operações incluem modificar dinamicamente o esquema, atualizar a configuração do índice de pesquisa, listar índices de pesquisa, consultar descrições de índices de pesquisa e excluir um índice de pesquisa.
Para analisar dados, como encontrar valores máximos ou mínimos, calcular somas ou contar linhas, utilize o recurso de agregação estatística ou de consulta SQL.
Para exportar dados rapidamente sem ordem específica, use o recurso de varredura paralela.