Rövid útmutató: Az Apache Cassandra felügyelt Azure-példányának keresése a Lucene Index használatával (előzetes verzió)
A Stratio Cassandra-ból származó Cassandra Lucene Index az Apache Cassandra beépülő modulja, amely kibővíti az index funkcióit, hogy teljes szöveges keresési képességeket és ingyenes többváltozós, térinformatikai és bitemporális keresést biztosítson. Ez a Cassandra másodlagos indexeinek Apache Lucene-alapú implementációjával érhető el, ahol a fürt minden csomópontja saját adatokat indexel. Ez a rövid útmutató bemutatja, hogyan kereshet azure managed instance for Apache Cassandra-ban a Lucene Index használatával.
Fontos
A Lucene Index nyilvános előzetes verzióban érhető el. Ez a szolgáltatás szolgáltatásiszint-szerződés nélkül érhető el, és éles számítási feladatokhoz nem ajánlott. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
Figyelmeztetés
A Lucene index beépülő modul korlátozása, hogy a partícióközi keresések nem hajthatók végre kizárólag az indexben – a Cassandra-nak minden csomópontra el kell küldenie a lekérdezést. Ez problémákat okozhat a partíciók közötti keresések teljesítményével (memória- és CPU-terhelés), ami hatással lehet az állandó állapotú számítási feladatokra.
Ha a keresési követelmények jelentősek, javasoljuk egy dedikált másodlagos adatközpont üzembe helyezését, amely csak keresésekhez használható, minimális számú csomóponttal, amelyek mindegyike magas magszámmal rendelkezik (legalább 16). Az elsődleges (működési) adatközpont kulcstereit ezután úgy kell konfigurálni, hogy az adatokat replikálja a másodlagos (keresési) adatközpontba.
Előfeltételek
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Felügyelt Azure-példány üzembe helyezése Apache Cassandra-fürthöz. Ezt a portálon keresztül teheti meg – A Lucene-indexek alapértelmezés szerint engedélyezve lesznek, amikor a fürtök a portálról vannak üzembe helyezve. Ha Lucene-indexeket szeretne hozzáadni egy meglévő fürthöz, kattintson
Update
a portál áttekintési paneljére, válassza kiCassandra Lucene Index
, majd kattintson a frissítésre az üzembe helyezéshez.
Adatok létrehozása a Lucene Index használatával
CQLSH
A parancsablakban hozzon létre egy kulcsteret és egy táblát az alábbiak szerint: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 );
Most hozzon létre egy egyéni másodlagos indexet a táblában a Lucene Index használatával:
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"} } }' };
Szúrja be a következő tweetmintákat:
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);
Olvasási konzisztencia szabályozása
A korábban létrehozott index a tábla összes oszlopát a megadott típusokkal indexeli, a kereséshez használt olvasási index pedig másodpercenként egyszer frissül. Másik lehetőségként explicit módon frissítheti az összes index-szegmenst egy üres kereséssel az ALL konzisztenciával:
CONSISTENCY ALL SELECT * FROM tweets WHERE expr(tweets_index, '{refresh:true}'); CONSISTENCY QUORUM
Most már kereshet tweeteket egy bizonyos dátumtartományon belül:
SELECT * FROM tweets WHERE expr(tweets_index, '{filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}}');
Ez a keresés az érintett index-szegmensek explicit frissítésének kényszerítésével is elvégezhető:
SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, refresh: true }') limit 100;
Adatok keresése
Ha az első 100 releváns tweetben szeretne keresni, ahol a törzsmező a "Kattintás a hivatkozásra" kifejezést tartalmazza egy adott dátumtartományon belül:
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;
A keresés finomítása csak a "q" betűvel kezdődő felhasználók által írt tweetek lekéréséhez:
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;
A 100 újabb szűrt találat lekéréséhez használja a rendezési lehetőséget:
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;
Az előző keresés a földrajzi helyhez közeli tweetekre korlátozható:
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;
Az eredményeket földrajzi hely távolsága alapján is rendezheti:
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;
Következő lépések
Ebben a rövid útmutatóban megtanulta, hogyan kereshet azure managed instance for Apache Cassandra-fürtöket a Lucene Search használatával. Most már megkezdheti a fürttel való munkát: