Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cassandra Lucene Index, qui dérive de Stratio Cassandra, est un plug-in pour Apache Cassandra. Lucene Index étend ses fonctionnalités d’index pour fournir des fonctionnalités de recherche en texte intégral et une recherche multivariable, géospatiale et bitemporale gratuite. Elle est obtenue par le biais d’une implémentation basée sur Apache Lucene d’index secondaires Cassandra, où chaque nœud de l’index cluster indexe ses propres données. Ce guide de démarrage rapide montre comment rechercher Azure Managed Instance pour Apache Cassandra à l’aide de Lucene Index.
Important
Lucene Index est en préversion publique. Cette fonctionnalité est fournie sans contrat de niveau de service. Nous ne la recommandons pas pour les charges de travail de production. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Le plug-in Lucene Index ne peut pas exécuter de recherches entre partitions uniquement dans l’index. Cassandra doit envoyer la requête à chaque nœud. Cette limitation peut entraîner des problèmes de performances (mémoire et charge processeur) pour les recherches entre partitions susceptibles d’affecter les charges de travail à état stable.
Si vos besoins de recherche sont significatifs, nous vous recommandons de déployer un centre de données secondaire dédié à utiliser uniquement pour les recherches. Un nombre minimal de nœuds doit chacun avoir un nombre élevé de cœurs (minimum de 16). Les espaces de clés de votre centre de données principal (opérationnel) doivent ensuite être configurés pour répliquer des données vers votre centre de données secondaire (recherche).
Prérequis
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Déployez un cluster Azure Managed Instance pour Apache Cassandra. Vous pouvez effectuer cette étape via le portail Azure. Les index Lucene sont activés par défaut lorsque les clusters sont déployés à partir du portail. Si vous souhaitez ajouter des index Lucene à un cluster existant, sélectionnez Mettre à jour dans le volet Vue d’ensemble du portail. Sélectionnez l’index Lucene Cassandra, puis sélectionnez Mettre à jour pour déployer.
Connectez-vous à votre cluster depuis le Cassandra Query Language Shell (CQLSH).
Créer des données avec Lucene Index
Dans votre fenêtre de commande CQLSH, créez un espace de clés et une table :
CREATE KEYSPACE demo WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'datacenter-1': 3}; USE demo; CREATE TABLE tweets ( id INT PRIMARY KEY, user TEXT, body TEXT, time TIMESTAMP, latitude FLOAT, longitude FLOAT );Créez maintenant un index secondaire personnalisé sur la table à l’aide de l’index Lucene :
CREATE CUSTOM INDEX tweets_index ON tweets () USING 'com.stratio.cassandra.lucene.Index' WITH OPTIONS = { 'refresh_seconds': '1', 'schema': '{ fields: { id: {type: "integer"}, user: {type: "string"}, body: {type: "text", analyzer: "english"}, time: {type: "date", pattern: "yyyy/MM/dd"}, place: {type: "geo_point", latitude: "latitude", longitude: "longitude"} } }' };Insérez les exemples de tweets suivants :
INSERT INTO tweets (id,user,body,time,latitude,longitude) VALUES (1,'theo','Make money fast, 5 easy tips', '2023-04-01T11:21:59.001+0000', 0.0, 0.0); INSERT INTO tweets (id,user,body,time,latitude,longitude) VALUES (2,'theo','Click my link, like my stuff!', '2023-04-01T11:21:59.001+0000', 0.0, 0.0); INSERT INTO tweets (id,user,body,time,latitude,longitude) VALUES (3,'quetzal','Click my link, like my stuff!', '2023-04-02T11:21:59.001+0000', 0.0, 0.0); INSERT INTO tweets (id,user,body,time,latitude,longitude) VALUES (4,'quetzal','Click my link, like my stuff!', '2023-04-01T11:21:59.001+0000', 40.3930, -3.7328); INSERT INTO tweets (id,user,body,time,latitude,longitude) VALUES (5,'quetzal','Click my link, like my stuff!', '2023-04-01T11:21:59.001+0000', 40.3930, -3.7329);
Contrôler la cohérence de lecture
L’index que vous avez créé précédemment indexe toutes les colonnes de la table avec les types spécifiés. L’index de lecture utilisé pour la recherche est actualisé une fois par seconde. Vous pouvez également actualiser explicitement tous les fragments d’index avec une recherche vide, en respectant la cohérence de
ALL.CONSISTENCY ALL SELECT * FROM tweets WHERE expr(tweets_index, '{refresh:true}'); CONSISTENCY QUORUMMaintenant, vous pouvez rechercher des tweets dans une certaine plage de dates :
SELECT * FROM tweets WHERE expr(tweets_index, '{filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}}');Vous pouvez également effectuer cette recherche en forçant une actualisation explicite des fragments d’index concernés.
SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, refresh: true }') limit 100;
Rechercher des données
Pour rechercher les 100 premiers tweets plus pertinents et où le
bodychamp contient l’expressionClick my linkdans une plage de dates particulière :SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, query: {type: "phrase", field: "body", value: "Click my link", slop: 1} }') LIMIT 100;Pour affiner la recherche afin d’obtenir uniquement les tweets écrits par les utilisateurs dont le nom commence par « q » :
SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: [ {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, {type: "prefix", field: "user", value: "q"} ], query: {type: "phrase", field: "body", value: "Click my link", slop: 1} }') LIMIT 100;Pour obtenir les 100 résultats filtrés plus récents, vous pouvez utiliser l’option de tri :
SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: [ {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, {type: "prefix", field: "user", value: "q"} ], query: {type: "phrase", field: "body", value: "Click my link", slop: 1}, sort: {field: "time", reverse: true} }') limit 100;Vous pouvez restreindre la recherche précédente aux tweets créés près d’une position géographique :
SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: [ {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, {type: "prefix", field: "user", value: "q"}, {type: "geo_distance", field: "place", latitude: 40.3930, longitude: -3.7328, max_distance: "1km"} ], query: {type: "phrase", field: "body", value: "Click my link", slop: 1}, sort: {field: "time", reverse: true} }') limit 100;Vous pouvez également trier les résultats par distance vers une position géographique :
SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: [ {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, {type: "prefix", field: "user", value: "q"}, {type: "geo_distance", field: "place", latitude: 40.3930, longitude: -3.7328, max_distance: "1km"} ], query: {type: "phrase", field: "body", value: "Click my link", slop: 1}, sort: [ {field: "time", reverse: true}, {field: "place", type: "geo_distance", latitude: 40.3930, longitude: -3.7328} ] }') limit 100;
Étape suivante
Dans ce guide de démarrage rapide, vous avez appris à rechercher un cluster Azure Managed Instance pour Apache Cassandra à l’aide de Lucene Index. Vous pouvez maintenant commencer à utiliser le cluster :