Questo è un articolo di follow-up ai due precedenti [2,3]. Finora, abbiamo caricato i dati indicizzati nell'archiviazione di Apache Solr e abbiamo interrogato i dati su questo. Ora imparerai come connettere il sistema di gestione di database relazionali PostgreSQL [4] ad Apache Solr e come eseguire una ricerca in esso utilizzando le funzionalità di Solr. Ciò rende necessario eseguire diversi passaggi descritti di seguito in modo più dettagliato: configurare PostgreSQL, preparare una struttura dati in un database PostgreSQL e connettere PostgreSQL ad Apache Solr ed eseguire la nostra ricerca.
Passaggio 1: configurazione di PostgreSQL
Informazioni su PostgreSQL: una breve informazione
PostgreSQL è un ingegnoso sistema di gestione di database relazionali a oggetti. È disponibile per l'uso e ha subito uno sviluppo attivo da oltre 30 anni. Proviene dall'Università della California, dove è visto come il successore di Ingres [7].
Fin dall'inizio, è disponibile sotto open-source (GPL), gratuito da usare, modificare e distribuire. È ampiamente utilizzato e molto popolare nel settore. PostgreSQL è stato inizialmente progettato per funzionare solo su sistemi UNIX/Linux e successivamente è stato progettato per funzionare su altri sistemi come Microsoft Windows, Solaris e BSD. L'attuale sviluppo di PostgreSQL viene svolto in tutto il mondo da numerosi volontari.
Configurazione di PostgreSQL
Se non lo hai ancora fatto, installa il server e il client PostgreSQL localmente, ad esempio, su Debian GNU/Linux come descritto di seguito usando apt. Due articoli trattano di PostgreSQL - L'articolo di Yunis Said [5] discute la configurazione su Ubuntu. Tuttavia, gratta solo la superficie mentre il mio articolo precedente si concentra sulla combinazione di PostgreSQL con l'estensione GIS PostGIS [6]. La descrizione qui riassume tutti i passaggi necessari per questa particolare configurazione.
# apt install postgresql-13 postgresql-client-13Quindi, verifica che PostgreSQL sia in esecuzione con l'aiuto del comando pg_isready. Questa è un'utilità che fa parte del pacchetto PostgreSQL.
# pg_isready/var/run/postgresql:5432 - Le connessioni sono accettate
L'output sopra mostra che PostgreSQL è pronto e in attesa di connessioni in entrata sulla porta 5432. Se non diversamente impostato, questa è la configurazione standard. Il prossimo passo è impostare la password per l'utente UNIX Postgres:
# passwd PostgresTieni presente che PostgreSQL ha il proprio database utente, mentre l'utente amministrativo PostgreSQL Postgres non ha ancora una password. Il passaggio precedente deve essere eseguito anche per l'utente PostgreSQL Postgres:
# su - Postgres$ psql -c "ALTER USER Postgres CON PASSWORD 'password';"
Per semplicità, la password scelta è solo una password e dovrebbe essere sostituita da una frase di password più sicura su sistemi diversi dal testing. Il comando sopra modificherà la tabella utente interna di PostgreSQL. Prestare attenzione alle diverse virgolette: la password tra virgolette singole e la query SQL tra virgolette doppie per evitare che l'interprete della shell valuti il comando in modo errato. Inoltre, aggiungi un punto e virgola dopo la query SQL prima delle virgolette alla fine del comando.
Successivamente, per motivi amministrativi, connettiti a PostgreSQL come utente Postgres con la password precedentemente creata. Il comando si chiama psql:
$ psqlLa connessione da Apache Solr al database PostgreSQL viene eseguita come utente solr. Quindi, aggiungiamo l'utente solr PostgreSQL e impostiamo un solr password corrispondente per lui in una volta sola:
$ CREA UTENTE solr CON PASSWD 'solr';Per semplicità, la password scelta è solo solr e dovrebbe essere sostituita da una frase password più sicura sui sistemi che sono in produzione.
Passaggio 2: preparazione di una struttura dati
Per archiviare e recuperare i dati, è necessario un database corrispondente. Il comando seguente crea un database di auto che appartiene all'utente solr e verrà utilizzato in seguito.
$ CREATE DATABASE automobili CON PROPRIETARIO = solr;Quindi, connettiti al database delle auto appena creato come utente solr. L'opzione -d (opzione breve per -dbname) definisce il nome del database e -U (opzione breve per -username) il nome dell'utente PostgreSQL.
$ psql -d auto -U solrUn database vuoto non è utile, ma tabelle strutturate con contenuti sì. Creare la struttura delle carrozze da tavolo come segue:
$ CREA TABELLA auto (ID int,
crea varchar(100),
modello varchar(100),
descrizione varchar(100),
colore varchar(50),
prezzo intero
);
Le auto della tabella contengono sei campi dati: id (intero), make (una stringa di lunghezza 100), model (una stringa di lunghezza 100), description (una stringa di lunghezza 100), color (una stringa di lunghezza 50) e prezzo (intero). Per avere alcuni dati di esempio, aggiungi i seguenti valori alle table car come istruzioni SQL:
$ INSERIRE NELLE auto (id, marca, modello, descrizione, colore, prezzo)VALORI (1, 'BMW', 'X5', 'Auto fredda', 'grigio', 45000);
$ INSERIRE NELLE auto (id, marca, modello, descrizione, colore, prezzo)
VALORI (2, 'Audi', 'Quattro', 'auto da corsa', 'bianco', 30000);
Il risultato sono due voci che rappresentano una BMW X5 grigia che costa 45000 USD, descritta come un'auto fantastica, e un'auto da corsa bianca Audi Quattro che costa 30000 USD.
Quindi, esci dalla console di PostgreSQL usando \q o esci.
$ \qPassaggio 3: connessione di PostgreSQL con Apache Solr
La connessione di PostgreSQL e Apache Solr si basa su due software: un driver Java per PostgreSQL chiamato driver Java Database Connectivity (JDBC) e un'estensione per la configurazione del server Solr. Il driver JDBC aggiunge un'interfaccia Java a PostgreSQL e la voce aggiuntiva nella configurazione di Solr dice a Solr come connettersi a PostgreSQL usando il driver JDBC.
L'aggiunta del driver JDBC viene eseguita come utente root come segue e installa il driver JDBC dal repository dei pacchetti Debian:
# apt-get install libpostgresql-jdbc-javaSul lato Apache Solr, deve esistere anche un nodo corrispondente. Se non lo hai ancora fatto, come utente UNIX solr, crea le auto del nodo come segue:
$ bin/solr create -c autoSuccessivamente, estendi la configurazione Solr per il nodo appena creato. Aggiungi le righe sottostanti al file /var/solr/data/cars/conf/solrconfig.xml:
db-data-config.xmlInoltre, crea un file /var/solr/data/cars/conf/data-config.xml e memorizza il seguente contenuto al suo interno:
Le righe sopra corrispondono alle impostazioni precedenti e definiscono il driver JDBC, specificare la porta 5432 per connettersi al DBMS PostgreSQL come utente solr con la password corrispondente e impostare la query SQL da eseguire da PostgreSQL. Per semplicità, è un'istruzione SELECT che cattura l'intero contenuto della tabella.
Quindi, riavvia il server Solr per attivare le modifiche. Come utente root eseguire il seguente comando:
# systemctl riavvia solrL'ultimo passaggio è l'importazione dei dati, ad esempio utilizzando l'interfaccia web di Solr. La casella di selezione del nodo sceglie le auto del nodo, quindi dal menu Nodo sotto la voce Importa dati seguito dalla selezione di importazione completa dal menu Comando a destra di esso. Infine, premi il pulsante Esegui. La figura seguente mostra che Solr ha indicizzato con successo i dati.
Passaggio 4: interrogazione dei dati dal DBMS
L'articolo precedente [3] si occupa dell'interrogazione dei dati in dettaglio, del recupero del risultato e della selezione del formato di output desiderato: CSV, XML o JSON. L'interrogazione dei dati viene eseguita in modo simile a quanto appreso in precedenza e nessuna differenza è visibile all'utente. Solr fa tutto il lavoro dietro le quinte e comunica con il DBMS PostgreSQL connesso come definito nel core o cluster Solr selezionato.
L'utilizzo di Solr non cambia e le query possono essere inviate tramite l'interfaccia di amministrazione di Solr o utilizzando curl o wget sulla riga di comando. Invii una richiesta Get con un URL specifico al server Solr (richiesta, aggiorna o elimina). Solr elabora la richiesta utilizzando il DBMS come unità di memorizzazione e restituisce il risultato della richiesta. Successivamente, post-elabora la risposta localmente.
L'esempio seguente mostra l'output della query "/select?q=*. *” in formato JSON nell'interfaccia di amministrazione di Solr. I dati vengono recuperati dal database delle auto che abbiamo creato in precedenza.
Conclusione
Questo articolo mostra come interrogare un database PostgreSQL da Apache Solr e spiega la configurazione corrispondente. Nella parte successiva di questa serie imparerai come combinare diversi nodi Solr in un cluster Solr.
Riguardo agli Autori
Jacqui Kabeta è un ambientalista, avido ricercatore, formatore e mentore. In diversi paesi africani, ha lavorato nel settore IT e negli ambienti delle ONG.
Frank Hofmann è uno sviluppatore IT, formatore e autore e preferisce lavorare a Berlino, Ginevra e Città del Capo. Coautore del libro sulla gestione dei pacchetti Debian disponibile da dpmb.organizzazione
Link e riferimenti
- [1] Apache Solr, https://lucene.apache.org/solr/
- [2] Frank Hofmann e Jacqui Kabeta: Introduzione ad Apache Solr. Parte 1, https://linuxhint.com/apache-solr-setup-a-node/
- [3] Frank Hofmann e Jacqui Kabeta: Introduzione ad Apache Solr. Interrogazione dati. Parte 2, http://linuxhint.come
- [4] PostgreSQL, https://www.postgresql.org/
- [5] Younis ha detto: come installare e configurare il database PostgreSQL su Ubuntu 20.04, https://linuxhint.com/install_postgresql_-ubuntu/
- [6] Frank Hofmann: Configurazione di PostgreSQL con PostGIS su Debian GNU/Linux 10, https://linuxhint.com/setup_postgis_debian_postgres/
- [7] Ingres, Wikipedia, https://en.wikipedia.org/wiki/Ingres_(database)