Cos'è Apache Solr?
Apache Solr è uno dei database NoSQL più popolari che può essere utilizzato per archiviare dati e interrogarli quasi in tempo reale. È basato su Apache Lucene ed è scritto in Java. Proprio come Elasticsearch, supporta le query di database tramite API REST. Ciò significa che possiamo utilizzare semplici chiamate HTTP e utilizzare metodi HTTP come GET, POST, PUT, DELETE ecc. per accedere ai dati. Fornisce anche un'opzione per ottenere dati sotto forma di XML o JSON tramite le API REST.
Architettura: Apache Solr
Prima di poter iniziare a lavorare con Apache Solr, dobbiamo comprendere i componenti che costituiscono Apache Solr. Diamo un'occhiata ad alcuni componenti che ha:
Architettura di Apache Solr
Nota che solo i componenti principali per Solr sono mostrati nella figura sopra. Comprendiamo anche qui la loro funzionalità:
- Gestori delle richieste: Le richieste che un client fa a Solr sono gestite da un Request Handler. La richiesta può essere qualsiasi cosa, dall'aggiunta di un nuovo record all'aggiornamento di un indice in Solr. I gestori identificano il tipo di richiesta dal metodo HTTP utilizzato con la mappatura della richiesta.
- Componente di ricerca: Questo è uno dei componenti più importanti per cui Solr è noto. Il componente di ricerca si occupa di eseguire operazioni relative alla ricerca come sfocatura, controlli ortografici, query di termini, ecc.
- Analizzatore di query: questo è il componente che analizza effettivamente la query che un client passa al gestore della richiesta e suddivide una query in più parti che possono essere comprese dal motore sottostante
- Scrittore di risposte: Questo componente è responsabile della gestione del formato di output per le query passate al motore. Response Writer ci consente di fornire un output in vari formati come XML, JSON ecc.
- Analizzatore/Tokenizzatore: Lucene Engine comprende le query sotto forma di token multipli. Solr analizza la query, la suddivide in più token e la passa al motore Lucene.
- Processore di richiesta di aggiornamento: Quando viene eseguita una query ed esegue operazioni come l'aggiornamento di un indice e dei dati ad esso correlati, il componente Processore di richiesta di aggiornamento è responsabile della gestione dei dati nell'indice e della modifica.
Iniziare con Apache Solr
Per iniziare a utilizzare Apache Solr, deve essere installato sulla macchina. Per fare ciò, leggi Installa Apache Solr su Ubuntu.
Assicurati di avere un'installazione Solr attiva se vuoi provare gli esempi che presentiamo più avanti nella lezione e la pagina di amministrazione è raggiungibile su localhost:
Pagina iniziale di Apache Solr
Inserimento dati
Per iniziare, consideriamo una Collection in Solr che chiamiamo as linux_hint_collection. Non è necessario definire esplicitamente questa raccolta poiché quando inseriamo il primo oggetto, la raccolta verrà eseguita automaticamente. Proviamo la nostra prima chiamata API REST per inserire un nuovo oggetto nella raccolta denominata linux_hint_collection.
Inserimento dati
curl -X POST -H 'Tipo di contenuto: application/json''http://localhost:8983/solr/linux_hint_collection/update/json/docs' --data-binary '
"id": "iduye",
"nome": "Shubham"
'
Ecco cosa otteniamo indietro con questo comando:
Comando per inserire dati in Solr
I dati possono essere inseriti anche utilizzando la Homepage di Solr che abbiamo visto in precedenza. Proviamo questo qui in modo che le cose siano chiare:
Inserisci dati tramite la home page di Solr
Poiché Solr ha un eccellente modo di interagire con le API HTTP RESTful, d'ora in poi dimostreremo l'interazione con il DB utilizzando le stesse API e non ci concentreremo molto sull'inserimento di dati tramite la pagina Web di Solr.
Elenca tutte le raccolte
Possiamo elencare tutte le raccolte in Apache Solr utilizzando anche un'API REST. Ecco il comando che possiamo usare:
Elenca tutte le raccolte
curl http://localhost:8983/solr/admin/collections?action=LIST&wt=jsonVediamo l'output di questo comando:
Vediamo due raccolte qui che esistono nella nostra installazione di Solr.
Ottieni oggetto per ID
Ora, vediamo come possiamo OTTENERE dati dalla raccolta Solr con un ID specifico. Ecco il comando API REST:
Ottieni oggetto per ID
curl http://localhost:8983/solr/linux_hint_collection/get?id=iduyeEcco cosa otteniamo indietro con questo comando:
Ottieni tutti i dati
Nella nostra ultima API REST, abbiamo interrogato i dati utilizzando un ID specifico. Questa volta, otterremo tutti i dati presenti nella nostra raccolta Solr.
Ottieni oggetto per ID
curl http://localhost:8983/solr/linux_hint_collection/select?q=*:*Ecco cosa otteniamo indietro con questo comando:
Nota che abbiamo usato '*:*' nel parametro query query. Questo specifica che Solr dovrebbe restituire tutti i dati presenti nella raccolta. Anche se abbiamo specificato che tutti i dati devono essere restituiti, Solr comprende che la raccolta potrebbe contenere una grande quantità di dati e quindi, restituirà solo i primi 10 documenti.
Eliminazione di tutti i dati
Fino ad ora, tutte le API che abbiamo provato utilizzavano un formato JSON. Questa volta proveremo il formato di query XML. L'utilizzo del formato XML è estremamente simile a JSON poiché anche XML è autodescrittivo.
Proviamo un comando per eliminare tutti i dati che abbiamo nella nostra raccolta.
Eliminazione di tutti i dati
curl "http://localhost:8983/solr/linux_hint_collection/update?commit=true" -H "Content-Type: text/xml" --data-binary "*:*"Ecco cosa otteniamo indietro con questo comando:
Elimina tutti i dati utilizzando la query XML
Ora, se proviamo di nuovo a ottenere tutti i dati, vedremo che nessun dato è disponibile ora:
Ottieni tutti i dati
Conteggio totale degli oggetti
Per un comando CURL finale, vediamo un comando con il quale possiamo trovare il numero di oggetti presenti in un indice. Ecco il comando per lo stesso:
Conteggio totale degli oggetti
curl http://localhost:8983/solr/linux_hint_collection/query?debug=query&q=*:*Ecco cosa otteniamo indietro con questo comando:
Conta il numero di oggetti
Conclusione
In questa lezione, abbiamo esaminato come possiamo utilizzare Apache Solr e passare le query utilizzando curl sia in formato JSON che XML. Abbiamo anche visto che il pannello di amministrazione di Solr è utile allo stesso modo di tutti i comandi curl che abbiamo studiato.