Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Cassandra Lucene Index, który pochodzi z warstwy Stratio Cassandra, jest wtyczką dla systemu Apache Cassandra. Indeks Lucene rozszerza funkcjonalność indeksu, aby zapewnić funkcje wyszukiwania pełnotekstowego oraz bezpłatne wielomienne, geoprzestrzenne i bitemporalne wyszukiwanie. Można to osiągnąć za pomocą implementacji pomocniczych indeksów cassandra opartych na systemie Apache Lucene, gdzie każdy węzeł klastra indeksuje własne dane. W tym szybkim przewodniku przedstawiono, jak przeszukiwać zarządzane wystąpienie Azure dla Apache Cassandra przy użyciu Lucene Indexu.
Ważne
Indeks Lucene jest w publicznej wersji zapoznawczej. Ta funkcja jest udostępniana bez umowy dotyczącej poziomu usług. Nie zalecamy obsługi obciążeń produkcyjnych. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Wtyczka indeksu Lucene nie może wykonywać wyszukiwania między partycjami wyłącznie w indeksie. System Cassandra musi wysłać zapytanie do każdego węzła. To ograniczenie może prowadzić do problemów z wydajnością (pamięcią i obciążeniem procesora CPU) w przypadku wyszukiwania między partycjami, które mogą mieć wpływ na obciążenia w stanie stałym.
Jeśli wymagania dotyczące wyszukiwania są znaczące, zalecamy wdrożenie dedykowanego pomocniczego centrum danych do użycia tylko w przypadku wyszukiwania. Minimalna liczba węzłów powinna mieć dużą liczbę rdzeni (co najmniej 16). Przestrzenie kluczy w podstawowym (operacyjnym) centrum danych powinny być następnie skonfigurowane do replikowania danych do pomocniczego (wyszukiwania) centrum danych.
Wymagania wstępne
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wdrażanie wystąpienia zarządzanego platformy Azure dla klastra Apache Cassandra. Ten krok można wykonać za pośrednictwem witryny Azure Portal. Indeksy Lucene są domyślnie włączone, gdy klastry są wdrażane z poziomu portalu. Jeśli chcesz dodać indeksy Lucene do istniejącego klastra, wybierz pozycję Aktualizuj w okienku Przegląd portalu. Wybierz pozycję Indeks Cassandra Lucene, a następnie wybierz pozycję Aktualizuj, aby wdrożyć.
Połącz się z klastrem za pomocą powłoki języka zapytań Cassandra (CQLSH).
Tworzenie danych za pomocą indeksu Lucene
W oknie polecenia CQLSH utwórz przestrzeń kluczy i 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 );Teraz utwórz niestandardowy indeks pomocniczy w tabeli przy użyciu indeksu 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"} } }' };Wstaw następujące przykładowe tweety:
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);
Kontrolowanie spójności odczytu
Utworzony wcześniej indeks indeksuje wszystkie kolumny w tabeli z określonymi typami. Indeks odczytu używany do wyszukiwania jest odświeżany raz na sekundę. Alternatywnie możesz jawnie odświeżyć wszystkie odłamki indeksu za pomocą pustego zapytania przy zachowaniu spójności
ALL:CONSISTENCY ALL SELECT * FROM tweets WHERE expr(tweets_index, '{refresh:true}'); CONSISTENCY QUORUMTeraz możesz wyszukiwać tweety w określonym zakresie dat:
SELECT * FROM tweets WHERE expr(tweets_index, '{filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}}');Możesz również wykonać to wyszukiwanie, wymuszając jawne odświeżenie zaangażowanych fragmentów indeksu:
SELECT * FROM tweets WHERE expr(tweets_index, '{ filter: {type: "range", field: "time", lower: "2023/03/01", upper: "2023/05/01"}, refresh: true }') limit 100;
Wyszukiwanie danych
Aby wyszukać 100 najważniejszych tweetów, które są bardziej istotne, i gdzie
bodypole zawiera frazęClick my linkw określonym zakresie dat: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;Aby uściślić wyszukiwanie, aby uzyskać tylko tweety napisane przez użytkowników, których nazwy zaczynają się od "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;Aby uzyskać 100 odfiltrowanych wyników, które są nowsze, możesz użyć opcji sortowania:
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;Poprzednie wyszukiwanie można ograniczyć do tweetów utworzonych w pobliżu położenia geograficznego:
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;Wyniki można również posortować według odległości do położenia geograficznego:
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;
Następny krok
W tym krótkim wprowadzeniu nauczyłeś się, jak wyszukiwać zarządzane wystąpienie Azure dla klastra Apache Cassandra za pomocą indeksu Lucene. Teraz możesz rozpocząć pracę z klastrem: