Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Cassandra Lucene Index, die is afgeleid van Stratio Cassandra, is een invoegtoepassing voor Apache Cassandra. Lucene Index breidt de indexfunctionaliteit uit om zoekmogelijkheden voor volledige tekst en gratis multivariabele, georuimtelijke en bitemporale zoekopdrachten te bieden. Dit wordt bereikt door een op Apache Lucene gebaseerde implementatie van secundaire Cassandra-indexen, waarbij elk knooppunt van het cluster zijn eigen gegevens indexeert. In deze quickstart ziet u hoe u met behulp van Lucene Index kunt zoeken in Azure Managed Instance voor Apache Cassandra.
Belangrijk
Lucene Index is in openbare preview. Deze functie wordt geleverd zonder service level agreement. Dit wordt niet aanbevolen voor productieworkloads. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
De Lucene Index-invoegtoepassing kan zoekopdrachten tussen partities niet alleen uitvoeren in de index. Cassandra moet de query naar elk knooppunt verzenden. Deze beperking kan leiden tot problemen met prestaties (geheugen- en CPU-belasting) voor zoekopdrachten tussen partities die van invloed kunnen zijn op werkbelastingen met een constante status.
Als uw zoekvereisten belangrijk zijn, raden we u aan om een toegewezen secundair datacenter te implementeren om alleen te gebruiken voor zoekopdrachten. Een minimaal aantal knooppunten moet elk een groot aantal kernen hebben (minimaal 16). De keyspaces in uw primaire (operationele) datacenter moeten vervolgens worden geconfigureerd om gegevens te repliceren naar uw secundaire (zoek)datacenter.
Vereisten
Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Implementeer een Azure Managed Instance voor Een Apache Cassandra-cluster. U kunt deze stap uitvoeren via Azure Portal. Lucene-indexen worden standaard ingeschakeld wanneer clusters vanuit de portal worden geïmplementeerd. Als u Lucene-indexen wilt toevoegen aan een bestaand cluster, selecteert u Bijwerken in het deelvenster Overzicht van de portal. Selecteer Cassandra Lucene Index en selecteer Vervolgens Bijwerken om te implementeren.
Maak verbinding met uw cluster vanuit de Cassandra Query Language Shell (CQLSH).
Gegevens maken met Lucene Index
Maak in het opdrachtvenster CQLSH een keyspace en tabel:
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 );Maak nu een aangepaste secundaire index in de tabel met behulp van Lucene Index:
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"} } }' };Voeg de volgende voorbeeldtweets in:
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);
Leesconsistentie beheren
De index die u eerder hebt gemaakt, indexeert alle kolommen in de tabel met de opgegeven typen. De leesindex die wordt gebruikt voor zoeken, wordt eenmaal per seconde vernieuwd. U kunt ook expliciet alle index-shards vernieuwen met een lege zoekopdracht met de consistentie van
ALL:CONSISTENCY ALL SELECT * FROM tweets WHERE expr(tweets_index, '{refresh:true}'); CONSISTENCY QUORUMU kunt nu zoeken naar tweets binnen een bepaald datumbereik:
SELECT * FROM tweets WHERE expr(tweets_index, '{filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}}');U kunt deze zoekopdracht ook uitvoeren door expliciete vernieuwing van de betrokken index-shards af te dwingen:
SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, refresh: true }') limit 100;
Gegevens zoeken
Als u de tien belangrijkste tweets wilt doorzoeken die relevanter zijn en waar het
bodyveld de woordgroepClick my linkbinnen een bepaald datumbereik bevat: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;Om de zoekopdracht te verfijnen zodat alleen de tweets worden opgehaald die zijn geschreven door gebruikers waarvan de namen beginnen met '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;Als u de 100 gefilterde resultaten wilt ophalen die recenter zijn, kunt u de sorteeroptie gebruiken:
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;U kunt de vorige zoekopdracht beperken tot tweets die dicht bij een geografische positie zijn gemaakt:
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;U kunt de resultaten ook sorteren op afstand tot een geografische positie:
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;
Volgende stap
In deze quickstart hebt u geleerd hoe u kunt zoeken naar een Azure Managed Instance Apache Cassandra-cluster met behulp van Lucene Index. U kunt nu aan de slag met het cluster: