Što je Apache Solr
Apache Solr jedna je od najpopularnijih NoSQL baza podataka koja se može koristiti za pohranu podataka i postavljanje upita u gotovo stvarnom vremenu. Temelji se na Apache Lucene, a napisan je na Javi. Baš kao i Elasticsearch, podržava upite baze podataka putem REST API-ja. To znači da možemo koristiti jednostavne HTTP pozive i HTTP metode poput GET, POST, PUT, DELETE itd. za pristup podacima. Također pruža mogućnost dobivanja podataka u obliku XML ili JSON putem REST API-ja.
Arhitektura: Apache Solr
Prije nego što započnemo raditi s Apache Solr, moramo razumjeti komponente koje čine Apache Solr. Pogledajmo neke komponente koje ima:
Apache Solr Arhitektura
Imajte na umu da su samo glavne komponente za Solr prikazane na gornjoj slici. Shvatimo i njihovu funkcionalnost ovdje:
- Voditelji zahtjeva: Zahtjevima koje klijent uputi Solru upravlja voditelj zahtjeva. Zahtjev može biti bilo što, od dodavanja novog zapisa do ažuriranja indeksa u Solru. Rukovatelji prepoznaju vrstu zahtjeva iz HTTP metode koja se koristi s mapiranjem zahtjeva.
- Komponenta pretraživanja: Ovo je jedna od najvažnijih komponenata po kojoj je Solr poznat. Komponenta pretraživanja brine se o izvođenju operacija povezanih s pretraživanjem poput nejasnoća, provjere pravopisa, upita za termine itd.
- Upit za raščlanjivanje: Ovo je komponenta koja zapravo raščlanjuje upit koji klijent prosljeđuje obrađivaču zahtjeva i razbija upit na više dijelova što osnovni mehanizam može razumjeti
- Pisac odgovora: Ova je komponenta odgovorna za upravljanje izlaznim formatom za upite proslijeđene mehanizmu. Response Writer nam omogućuje pružanje rezultata u različitim formatima kao što su XML, JSON itd.
- Analizator / tokenizer: Lucene Engine razumije upite u obliku više tokena. Solr analizira upit, rastavlja ga na više tokena i prosljeđuje ga Lucene Engineu.
- Procesor zahtjeva za ažuriranje: Kada se upit pokrene i izvodi operacije poput ažuriranja indeksa i podataka povezanih s njim, komponenta procesora zahtjeva za ažuriranje odgovorna je za upravljanje podacima u indeksu i njihovo mijenjanje.
Početak rada s Apache Solr
Da biste počeli koristiti Apache Solr, mora biti instaliran na stroju. Da biste to učinili, pročitajte Instalacija Apache Solr na Ubuntuu.
Provjerite imate li aktivnu instalaciju Solr ako želite isprobati primjere koje ćemo predstaviti kasnije u lekciji i ako je administratorska stranica dostupna na localhost:
Početna stranica Apache Solr
Umetanje podataka
Za početak, razmotrimo kolekciju u Solru koju nazivamo linux_hint_collection. Nema potrebe izričito definirati ovu zbirku, jer kada umetnemo prvi objekt, zbirka će se napraviti automatski. Pokušajmo s našim prvim REST API pozivom za umetanje novog objekta u zbirku s imenom linux_hint_collection.
Umetanje podataka
curl -X POST -H 'Content-Type: application / json''http: // localhost: 8983 / solr / linux_hint_collection / update / json / docs' --data-binarni '
"id": "iduye",
"name": "Shubham"
'
Evo što vraćamo ovom naredbom:
Naredba za umetanje podataka u Solr
Podaci se također mogu umetnuti pomoću Solr početne stranice koju smo ranije gledali. Pokušajmo ovo ovdje kako bi stvari bile jasne:
Umetnite podatke putem Solr početne stranice
Kako Solr ima izvrstan način interakcije s HTTP RESTful API-ima, od sada ćemo demonstrirati DB interakciju koristeći iste API-je i nećemo se usredotočiti puno na umetanje podataka putem web stranice Solr.
Navedi sve zbirke
Sve zbirke u Apache Solr možemo navesti i pomoću REST API-ja. Evo naredbe koju možemo koristiti:
Navedi sve zbirke
uvijanje http: // localhost: 8983 / solr / admin / collection?akcije = POPIS & wt = jsonPogledajmo izlaz za ovu naredbu:
Ovdje vidimo dvije kolekcije koje postoje u našoj instalaciji Solr.
Nabavite objekt po ID-u
Sada, da vidimo kako možemo DOBITI podatke iz Solr kolekcije s određenim ID-om. Evo naredbe REST API:
Nabavite objekt po ID-u
curl http: // localhost: 8983 / solr / linux_hint_collection / get?id = iduyeEvo što vraćamo ovom naredbom:
Dohvati sve podatke
U našem posljednjem REST API-u ispitivali smo podatke pomoću određenog ID-a. Ovaj put dobit ćemo sve podatke prisutne u našoj zbirci Solr.
Nabavite objekt po ID-u
uvojiti http: // localhost: 8983 / solr / linux_hint_collection / select?q = *: *Evo što vraćamo ovom naredbom:
Primijetite da smo upotrijebili '*: *' u parametru upita. To navodi da bi Solr trebao vratiti sve podatke prisutne u zbirci. Čak i ako smo naveli da svi podaci trebaju biti vraćeni, Solr razumije da zbirka može sadržavati veliku količinu podataka i tako, vratit će samo prvih 10 dokumenata.
Brisanje svih podataka
Do sada su svi API-ji koje smo isprobavali koristili JSON format. Ovaj put ćemo pokušati s XML formatom upita. Korištenje XML formata izuzetno je slično JSON-u jer je i XML samoopisan.
Pokušajmo naredbom za brisanje svih podataka koje imamo u našoj zbirci.
Brisanje svih podataka
curl "http: // localhost: 8983 / solr / linux_hint_collection / update?commit = true "-H" Content-Type: text / xml "--data-binarni" *: * "Evo što vraćamo ovom naredbom:
Izbrišite sve podatke pomoću XML upita
Ako opet pokušamo dobiti sve podatke, vidjet ćemo da sada nisu dostupni podaci:
Dohvati sve podatke
Ukupan broj objekata
Za konačnu naredbu CURL, pogledajmo naredbu pomoću koje možemo pronaći broj objekata koji su prisutni u indeksu. Evo naredbe za isto:
Ukupan broj objekata
curl http: // localhost: 8983 / solr / linux_hint_collection / query?otklanjanje pogrešaka = upit & q = *: *Evo što vraćamo ovom naredbom:
Broji broj predmeta
Zaključak
U ovoj smo lekciji pogledali kako možemo koristiti Apache Solr i prosljeđivati upite koristeći curl i u JSON i u XML formatu. Također smo vidjeli da je administratorska ploča Solr korisna na isti način kao i sve naredbe za curl koje smo proučavali.