Jest to artykuł uzupełniający do dwóch poprzednich [2,3]. Do tej pory załadowaliśmy indeksowane dane do pamięci Apache Solr i zapytaliśmy o to. Teraz dowiesz się, jak podłączyć relacyjny system zarządzania bazą danych PostgreSQL [4] do Apache Solr i przeprowadzić w nim wyszukiwanie za pomocą możliwości Solr. To sprawia, że konieczne jest wykonanie kilku kroków opisanych poniżej - Konfigurowanie PostgreSQL, przygotowanie struktury danych w bazie danych PostgreSQL i podłączenie PostgreSQL z Apache Solr i wykonywanie naszego wyszukiwania.
Krok 1: Konfigurowanie PostgreSQL
O PostgreSQL - krótkie informacje
PostgreSQL to genialny system zarządzania bazą danych. Był dostępny do użytku i przeszedł aktywny rozwój od ponad 30 lat. Pochodzi z University of California, gdzie jest postrzegany jako następca Ingres [7].
Od samego początku jest dostępny w ramach Open-Source (GPL), bezpłatnie w użyciu, modyfikowaniu i dystrybucji. Jest szeroko stosowany i bardzo popularny w branży. PostgreSQL został początkowo zaprojektowany do działania tylko w systemach UNIX/Linux, a później został zaprojektowany do działania w innych systemach, takich jak Microsoft Windows, Solaris i BSD. Obecny rozwój PostgreSQL odbywa się na całym świecie przez wielu wolontariuszy.
Konfiguracja PostgreSQL
Jeśli jeszcze nie zrobiono, zainstaluj PostgreSQL Server i klient lokalnie, na przykład w Debian GNU/Linux, jak opisano poniżej za pomocą APT. Dwa artykuły mają do czynienia z PostgreSQL - Artykuł Yunis Said [5] omawia konfigurację na Ubuntu. Mimo to zarysowuje powierzchnię, podczas gdy mój poprzedni artykuł koncentruje się na kombinacji PostgreSQL z rozszerzeniem GIS PostGIS [6]. Opis tutaj podsumowuje wszystkie kroki, których potrzebujemy do tej konkretnej konfiguracji.
# apt Zainstaluj 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_isReady
/var/run/postgreSQL: 5432 - Połączenia są akceptowane
Powyższe wyjście pokazuje, że PostgreSQL jest gotowy i czeka na połączenia przychodzące w porcie 5432. O ile nie ustawiono 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 administracyjny użytkownik PostgreSQL Postgres nie ma jeszcze hasła. Poprzedni krok musi być również wykonany dla PostgreSQL Postgres:
# Su - PostgresDla uproszczenia wybrane hasło jest tylko hasłem i powinno zostać zastąpione bezpieczniejszym frazą hasła na systemach innych niż testowanie. Polecenie powyżej zmieni wewnętrzną tabelę użytkowników PostgreSQL. Pamiętaj o różnych znakach cytatowych - hasło w pojedynczych cytatach i zapytanie SQL w podwójnych cytatach, aby zapobiec interpreterowi powłoki oceny polecenia w niewłaściwy sposób. Dodaj także półkolis po zapytaniu SQL przed podwójnymi cytatami na końcu polecenia.
Następnie, ze względów administracyjnych, połącz się z PostgreSQL jako postgres użytkownika z wcześniej utworzonym hasłem. Polecenie nazywa się PSQL:
$ psqlPołączenie z Apache Solr do bazy danych PostgreSQL odbywa się jako Solr użytkownika. Dodajmy więc Solr użytkownika PostgreSQL i ustaw dla niego odpowiednie hasło Solr za jednym razem:
$ Utwórz użytkownika Solr z PASSWD „Solr”;
Dla uproszczenia wybrane hasło jest po prostu solr i powinno zostać zastąpione bezpieczniejszym frazą hasła na systemach, które są w produkcji.
Krok 2: Przygotowanie struktury danych
Aby przechowywać i pobierać dane, potrzebna jest odpowiednia baza danych. Poniższe polecenie tworzy bazę danych samochodów, która należy do użytkownika Solr i będzie używane później.
$ Utwórz samochody bazy danych z właścicielem = solr;
Następnie połącz się z nowo utworzonymi samochodami bazy danych jako użytkownika Solr. Opcja -D (krótka opcja dla -dbname) definiuje nazwę bazy danych i -u (krótka opcja dla -username) Nazwa użytkownika PostgreSQL.
$ psql -d samochody -u solrPusta baza danych nie jest przydatna, ale tabele ustrukturyzowane z zawartością. Utwórz strukturę samochodów stołowych w następujący sposób:
$ Utwórz samochody stołowe (Samochody tabel zawierają sześć pól danych - id (liczba całkowita), Make (ciąg długości 100), model (ciąg długości 100), opis (ciąg długości 100), kolor (ciąg długości 50) i Cena (liczba całkowita). Aby niektóre przykładowe dane dodają następujące wartości do samochodów tabeli jako instrukcje SQL:
$ Wstaw do samochodów (id, marka, model, opis, kolor, cena)Rezultatem są dwa wpisy reprezentujące szary BMW X5, który kosztuje 45000 USD, opisany jako fajny samochód, oraz biały samochód wyścigowy Audi Quattro, który kosztuje 30000 USD.
Następnie wyjdź z konsoli PostgreSQL za pomocą \ q lub wyrzuć.
$ \ qKrok 3: Podłączenie PostgreSQL z Apache Solr
Połączenie PostgreSQL i Apache Solr opiera się na dwóch elementach oprogramowania - sterowniku Java dla sterownika PostgreSQL o nazwie Java Database Connectivity (JDBC) oraz rozszerzeniem 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 root użytkownika w następujący sposób, i instaluje sterownik JDBC z repozytorium pakietu Debian:
# apt-get instaluj libpostgresql-jdbc-javaPo stronie Apache Solr musi istnieć również odpowiedni węzeł. Jeśli jeszcze nie zrobiono, jako Użytkownik UNIX, utwórz samochody węzłowe w następujący sposób:
$ bin/solr twórz samochody -cNastępnie rozszerz konfigurację Solr dla nowo utworzonego węzła. Dodaj poniższe wiersze do pliku/var/solr/data/cars/conf/solrconfig.XML:
DB-Data-Config.XMLPonadto utwórz plik/var/solr/data/cars/conf/data-config.XML i przechowuj w nim następujące treści:
Powyższe wiersze odpowiadają poprzednim ustawieniom i zdefiniuj sterownik JDBC, podaj port 5432, aby połączyć się z PostgreSQL DBMS jako Solr użytkownika z odpowiednim hasłem, i ustaw zapytanie SQL do wykonania z Postgresql. Dla uproszczenia jest to instrukcja wybrana, która chwyta całą zawartość tabeli.
Następnie uruchom ponownie serwer Solr, aby aktywować zmiany. Gdy root użytkownika wykonuje następujące polecenie:
# Systemctl restart solrOstatnim krokiem jest na przykład import danych, używając interfejsu internetowego Solr. Pole wyboru węzłów wybiera samochody węzłowe, a następnie z menu węzła poniżej Wpis Data Wymport, a następnie wybór pełnego importu z menu poleceń do niego. Na koniec naciśnij przycisk Wykonaj. Poniższy rysunek pokazuje, że Solr z powodzeniem zindeksował dane.
Krok 4: Zapytanie danych z DBMS
Poprzedni artykuł [3] dotyczy szczegółowego zapytania do danych, pobierania wyniku i wybierania pożądanego formatu wyjściowego - CSV, XML lub JSON. Zapytanie o dane odbywa się podobnie do tego, czego się nauczyłeś, i nie jest widoczna dla użytkownika żadna różnica. Solr wykonuje całą pracę za scenami i komunikuje się z PostgreSQL DBMS podłączonym zgodnie z definicją w wybranym rdzeniu lub klastrze Solr.
Wykorzystanie Solr nie zmienia się, a zapytania można przesyłać za pośrednictwem interfejsu administratora Solr lub za pomocą curl lub wget na linii poleceń. Wysyłasz żądanie GET z określonym adresem URL na serwerze Solr (zapytanie, aktualizacja lub usuwanie). Solr przetwarza żądanie za pomocą DBMS jako jednostki pamięci i zwraca wynik żądania. Dalej, przetwarzaj odpowiedź lokalnie.
Poniższy przykład pokazuje wyjście zapytania „/Wybierz?Q =*. *”W formacie JSON w interfejsie administratora Solr. Dane są pobierane z samochodów bazy danych, które utworzyliśmy wcześniej.
Wniosek
W tym artykule pokazano, jak zapytać o bazę danych PostgreSQL od Apache Solr i wyjaśnia odpowiednią konfigurację. W następnej części tej serii nauczysz się 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 środowisku IT i organizacji pozarządowych.
Frank Hofmann jest programistą IT, trenerem i autorem i woli pracować z Berlina, Genewy i Kapsztadu. Współautor książki zarządzania pakietami Debian dostępna w DPMB.org
Linki i referencje