Apache Solr

Wprowadzenie do Apache Solr. Część 3 Łączenie z PostgreSQL

Wprowadzenie do Apache Solr. Część 3 Łączenie z PostgreSQL
Apache Solr [1] to framework wyszukiwarek napisany w Javie i oparty na bibliotece wyszukiwania Lucene [6]. W poprzednich dwóch artykułach skonfigurowaliśmy Apache Solr na wkrótce wydanym Debian GNU/Linux 11, zainicjowaliśmy pojedynczy rdzeń danych, wgraliśmy przykładowe dane, pokazaliśmy, jak na różne sposoby odpytywać dane wyjściowe i przetwarzać to.

Jest to kontynuacja dwóch poprzednich artykułów [2,3]. Do tej pory ładowaliśmy zindeksowane dane do pamięci Apache Solr i pytaliśmy o dane. Teraz dowiesz się jak podłączyć system zarządzania relacyjnymi bazami danych PostgreSQL [4] do Apache Solr i przeprowadzić w nim wyszukiwanie za pomocą możliwości Solr. W związku z tym konieczne jest wykonanie kilku kroków opisanych bardziej szczegółowo poniżej - konfiguracja PostgreSQL, przygotowanie struktury danych w bazie danych PostgreSQL, połączenie PostgreSQL z Apache Solr i wykonanie naszego wyszukiwania.

Krok 1: Konfiguracja PostgreSQL

O PostgreSQL - krótkie informacje

PostgreSQL to pomysłowy system zarządzania obiektowo-relacyjnymi bazami danych. Jest dostępny do użytku i był aktywnie rozwijany od ponad 30 lat. Pochodzi z Uniwersytetu Kalifornijskiego, gdzie jest postrzegany jako następca Ingresa [7].

Od samego początku jest dostępny na licencji open source (GPL), za darmo, można go modyfikować i rozpowszechniać. Jest szeroko stosowany i bardzo popularny w branży. PostgreSQL został początkowo zaprojektowany do działania tylko na systemach UNIX/Linux, a później został zaprojektowany do działania na innych systemach, takich jak Microsoft Windows, Solaris i BSD. Obecny rozwój PostgreSQL jest prowadzony przez wielu wolontariuszy na całym świecie.

Konfiguracja PostgreSQL

Jeśli jeszcze tego nie zrobiłeś, zainstaluj serwer i klienta PostgreSQL lokalnie, na przykład na Debianie GNU/Linux, jak opisano poniżej, używając apt. Dwa artykuły dotyczą PostgreSQL - artykuł Yunisa Saida [5] omawia konfigurację na Ubuntu. Mimo to tylko drapie powierzchnię, podczas gdy mój poprzedni artykuł skupia się na połączeniu PostgreSQL z rozszerzeniem GIS PostGIS [6]. Poniższy opis podsumowuje wszystkie kroki, których potrzebujemy do tej konkretnej konfiguracji.

# apt install postgresql-13 postgresql-client-13

Następnie sprawdź, czy PostgreSQL działa za pomocą polecenia pg_isready. Jest to narzędzie, które jest częścią pakietu PostgreSQL.

# pg_jest gotowy
/var/run/postgresql:5432 - Połączenia są akceptowane

Powyższe dane pokazują, że PostgreSQL jest gotowy i czeka na połączenia przychodzące na porcie 5432. O ile nie ustalono inaczej, jest to standardowa konfiguracja. Następnym krokiem jest ustawienie hasła dla użytkownika UNIX Postgres:

# passwd Postgres

Należy pamiętać, że PostgreSQL ma własną bazę danych użytkowników, podczas gdy administrator PostgreSQL nie ma jeszcze hasła. Poprzedni krok należy również wykonać dla użytkownika PostgreSQL Postgres:

# su - Postgres
$ psql -c "ALTER USER Postgres WITH PASSWORD 'hasło';"

Dla uproszczenia wybrane hasło jest tylko hasłem i powinno zostać zastąpione bezpieczniejszą frazą hasła w systemach innych niż testowe. Powyższe polecenie zmieni wewnętrzną tabelę użytkowników PostgreSQL. Zwróć uwagę na różne cudzysłowy — hasło w apostrofach, a zapytanie SQL w cudzysłowach, aby interpreter powłoki nie ocenił polecenia w niewłaściwy sposób. Dodaj także średnik po zapytaniu SQL przed podwójnymi cudzysłowami na końcu polecenia.

Następnie ze względów administracyjnych połącz się z PostgreSQL jako użytkownik Postgres z wcześniej utworzonym hasłem. Polecenie nazywa się psql:

$ psql

Połączenie z Apache Solr do bazy PostgreSQL odbywa się jako użytkownik solr. Dodajmy więc użytkownika PostgreSQL solr i ustawmy dla niego odpowiednie hasło solr za jednym razem:

$ UTWÓRZ UŻYTKOWNIKA solr Z HASŁEM 'solr';

Dla uproszczenia wybrane hasło jest po prostu solr i powinno zostać zastąpione bezpieczniejszą frazą hasła na systemach, które są w produkcji.

Krok 2: Przygotowanie struktury danych

Do przechowywania i pobierania danych potrzebna jest odpowiednia baza danych. Poniższe polecenie tworzy bazę samochodów należących do użytkownika solr i będzie używana później.

$ UTWÓRZ BAZĘ DANYCH samochodów Z WŁAŚCICIELEM = solr;

Następnie połącz się z nowo utworzonymi samochodami z bazą danych jako użytkownik solr. Opcja -d (krótka opcja dla -dbname) definiuje nazwę bazy danych, a -U (krótka opcja dla -username) nazwę użytkownika PostgreSQL.

$ psql -d samochody -U solr

Pusta baza danych nie jest przydatna, ale uporządkowane tabele z zawartością już nie. Utwórz strukturę wagonów stołowych w następujący sposób:

$ UTWÓRZ TABELĘ samochodów (
ID int,
zrobić varchar(100),
model varchar(100),
opis varchar(100),
kolor warchar(50),
cena int
);

Tabliczki zawierają sześć pól danych - id (integer), make (ciąg o długości 100), model (ciąg o długości 100), opis (ciąg o długości 100), kolor (ciąg o długości 50) i cena (liczba całkowita). Aby uzyskać przykładowe dane, dodaj następujące wartości do samochodów tabeli jako instrukcje SQL:

$ WSTAWIĆ SAMOCHODY (ID, marka, model, opis, kolor, cena)
WARTOŚCI (1, „BMW”, „X5”, „Fajny samochód”, „szary”, 45000);
$ WSTAWIĆ SAMOCHODY (ID, marka, model, opis, kolor, cena)
WARTOŚCI (2, „Audi”, „Quattro”, „samochód wyścigowy”, „biały”, 30000);

Rezultatem są dwie wpisy reprezentujące szare BMW X5 za 45000 USD, określane jako fajny samochód, oraz białe wyścigowe Audi Quattro za 30000 USD.

Następnie wyjdź z konsoli PostgreSQL za pomocą \q lub wyjdź.

$ \q

Krok 3: Łączenie PostgreSQL z Apache Solr

Połączenie PostgreSQL i Apache Solr opiera się na dwóch programach - sterowniku Java dla PostgreSQL o nazwie Java Database Connectivity (JDBC) oraz rozszerzeniu konfiguracji serwera Solr. Sterownik JDBC dodaje interfejs Java do PostgreSQL, a dodatkowy wpis w konfiguracji Solr mówi Solr jak połączyć się z PostgreSQL za pomocą sterownika JDBC.

Dodanie sterownika JDBC odbywa się jako użytkownik root w następujący sposób i instaluje sterownik JDBC z repozytorium pakietów Debiana:

# apt-get install libpostgresql-jdbc-java

Po stronie Apache Solr również musi istnieć odpowiedni węzeł. Jeśli jeszcze tego nie zrobiłeś, jako solr użytkownika UNIX, utwórz samochody węzła w następujący sposób:

$ bin/solr utwórz -c samochody

Następnie rozszerz konfigurację Solr dla nowo utworzonego węzła. Dodaj poniższe linie do pliku /var/solr/data/cars/conf/solrconfig.XML:

db-data-config.xml

Ponadto utwórz plik /var/solr/data/cars/conf/data-config.xml i zapisz w nim następującą zawartość:

Powyższe wiersze odpowiadają poprzednim ustawieniom i definiują sterownik JDBC, określ port 5432 do połączenia z DBMS PostgreSQL jako solr użytkownika z odpowiednim hasłem i ustaw zapytanie SQL, które ma być wykonywane z PostgreSQL. Dla uproszczenia jest to instrukcja SELECT, która obejmuje całą zawartość tabeli.

Następnie uruchom ponownie serwer Solr, aby aktywować zmiany. Jako użytkownik root wykonaj następujące polecenie:

# systemctl restart solr

Ostatnim krokiem jest import danych np. za pomocą interfejsu webowego Solr. Pole wyboru węzła wybiera samochody węzła, a następnie z menu Węzeł poniżej wpisu Import danych, a następnie wybór pełnego importu z menu Polecenia bezpośrednio do niego. Na koniec naciśnij przycisk Wykonaj. Poniższy rysunek pokazuje, że Solr pomyślnie zindeksował dane.

Krok 4: Zapytanie o dane z DBMS

Poprzedni artykuł [3] zajmuje się szczegółowym zapytaniem o dane, pobraniem wyniku i wyborem pożądanego formatu wyjściowego - CSV, XML lub JSON. Odpytywanie danych odbywa się podobnie do tego, czego się nauczyłeś wcześniej i żadna różnica nie jest widoczna dla użytkownika. Solr wykonuje całą pracę za kulisami i komunikuje się z systemem DBMS PostgreSQL podłączonym zgodnie z definicją w wybranym rdzeniu lub klastrze Solr.

Korzystanie z Solr nie ulega zmianie, a zapytania można przesyłać za pomocą interfejsu administratora Solr lub za pomocą curl lub wget w wierszu poleceń. Wysyłasz żądanie Get z określonym adresem URL do serwera Solr (zapytanie, aktualizacja lub usunięcie). Solr przetwarza żądanie używając DBMS jako jednostkę pamięci i zwraca wynik żądania. Następnie przetwórz odpowiedź lokalnie.

Poniższy przykład pokazuje wynik zapytania „/select?q=*. *” w formacie JSON w interfejsie administratora Solr. Dane są pobierane z bazy danych samochodów, które stworzyliśmy wcześniej.

Wniosek

Ten artykuł pokazuje, jak odpytywać bazę danych PostgreSQL z Apache Solr i wyjaśnia odpowiednią konfigurację. W kolejnej części tej serii dowiesz się, jak połączyć kilka węzłów Solr w klaster Solr.

O Autorach

Jacqui Kabeta jest ekologiem, zapalonym badaczem, trenerem i mentorem. W kilku krajach afrykańskich pracowała w branży IT i środowiskach NGO.

Frank Hofmann jest programistą IT, trenerem i autorem i woli pracować w Berlinie, Genewie i Kapsztadzie. Współautor książki o zarządzaniu pakietami Debiana dostępnej w dpmb.organizacja

Linki i referencje

Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...
How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...