Utilisez la méthode CreateSearchIndex pour créer un index de recherche sur une table de données. Une table de données peut comporter plusieurs index de recherche. Lors de la création d'un index de recherche, vous devez ajouter à l'index les champs que vous souhaitez interroger. Vous pouvez également configurer des options avancées, telles que le routage personnalisé et le prétri.
Prérequis
Un client Tablestore est initialisé. Pour plus d'informations, consultez la rubrique Initialiser un client Tablestore.
Une table de données est créée avec
max versionsdéfini sur 1 ettime to livedéfini sur -1. Pour plus d'informations, consultez la rubrique Créer une table de données.
Remarques d'utilisation
Les types de données des champs dans l'index de recherche doivent correspondre aux types de données des champs correspondants dans la table de données.
API
/**
* Create a search index.
* @api
*
* @param [] $request
* The request parameters, such as the table name and index configuration.
* @return [] The response.
* @throws OTSClientException Thrown if a parameter check fails or the server returns a verification error.
* @throws OTSServerException Thrown if the Tablestore server returns an error.
* @example "src/examples/CreateSearchIndex.php"
*/
public function createSearchIndex(array $request)
Paramètres
Spécifiez le nom de la table (table_name), le nom de l'index de recherche (index_name) et le schéma de l'index (schema). Le schéma comprend field_schemas (paramètres des champs), index_setting (paramètres de l'index) et index_sort (paramètres de prétri).
|
Paramètre |
Description |
|
table_name |
Le nom de la table de données. |
|
index_name |
Le nom de l'index de recherche. |
|
field_schemas |
La liste des schémas de champ. Chaque
|
|
index_setting |
Paramètres de l'index, y compris le paramètre routing_fields (facultatif) : Champs de routage personnalisés. Sélectionnez certaines colonnes de clé primaire comme champs de routage. Dans la plupart des cas, il suffit d'en définir un seul. Si vous définissez plusieurs clés de routage, le système concatène leurs valeurs en une seule valeur. Lors de l'écriture des données d'index, le système calcule l'emplacement de distribution des données d'index en fonction des valeurs des champs de routage. Les enregistrements ayant les mêmes valeurs de champ de routage sont indexés dans la même partition de données. |
|
index_sort |
Paramètres de prétri de l'index, y compris le paramètre Remarque
Les index contenant des champs de type Nested ne prennent pas en charge sorters (obligatoire) : la méthode de prétri pour l'index de recherche. Prend en charge PrimaryKeySort et FieldSort. Pour plus d'informations, consultez la rubrique Tri et pagination.
|
Exemple
Créez un index de recherche avec les colonnes suivantes : keyword (Keyword), text (Text), geo (Geo-point), long (Long), double (Double), boolean (Boolean), array (Keyword) et nested (Nested). La colonne nested contient une sous-colonne nested_keyword de type Keyword. L'index est prétrié par clé primaire et n'expire jamais.
$request = array(
'table_name' => 'php_sdk_test',
'index_name' => 'php_sdk_test_search_index',
'schema' => array(
'field_schemas' => array(
array(
'field_name' => 'keyword',
'field_type' => FieldTypeConst::KEYWORD,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'text',
'field_type' => FieldTypeConst::TEXT,
'analyzer' => 'single_word',
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => false
),
array(
'field_name' => 'geo',
'field_type' => FieldTypeConst::GEO_POINT,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'long',
'field_type' => FieldTypeConst::LONG,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'double',
'field_type' => FieldTypeConst::DOUBLE,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'boolean',
'field_type' => FieldTypeConst::BOOLEAN,
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => false
),
array(
'field_name' => 'array',
'field_type' => FieldTypeConst::KEYWORD,
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => true
),
array(
'field_name' => 'nested',
'field_type' => FieldTypeConst::NESTED,
'index' => false,
'enable_sort_and_agg' => false,
'field_schemas' => array(
array(
'field_name' => 'nested_keyword',
'field_type' => FieldTypeConst::KEYWORD,
'index' => false,
'enable_sort_and_agg' => false,
'is_array' => false
)
)
),
),
'index_setting' => array(
'routing_fields' => array("pk1")
),
// "index_sort" => array(// Indexes that contain Nested type fields do not support index_sort and are not presorted.
// array(
// 'field_sort' => array(
// 'field_name' => 'keyword',
// 'order' => SortOrderConst::SORT_ORDER_ASC,
// 'mode' => SortModeConst::SORT_MODE_AVG,
// )
// ),
// array(
// 'pk_sort' => array(
// 'order' => SortOrderConst::SORT_ORDER_ASC
// )
// ),
// )
)
);
$response = $otsClient->createSearchIndex($request);
FAQ
Références
Après avoir créé un index de recherche, utilisez ses méthodes de requête pour effectuer des interrogations de données multidimensionnelles. Les méthodes de requête prises en charge incluent la requête term, la requête terms, la requête match all, la requête match, la requête match phrase, la requête prefix, la requête range, la requête wildcard, la requête geo, la requête Boolean, la requête nested et la requête exists.
Appliquez le tri et la pagination ou le collapse (déduplication) aux résultats de la requête.
Gérez les index de recherche selon vos besoins. Pour plus d'informations, consultez les rubriques Modifier dynamiquement le schéma, Lister les index de recherche, Interroger la description d'un index de recherche et Supprimer un index de recherche.
Pour effectuer des analyses de données, telles que la recherche des valeurs maximales et minimales, le calcul de sommes ou le comptage de lignes, utilisez la fonctionnalité d'agrégation statistique ou la fonctionnalité de requête SQL.
Pour exporter rapidement des données sans ordre spécifique, utilisez la fonctionnalité de balayage parallèle.