Vad är Apache Solr
Apache Solr är en av de mest populära NoSQL-databaserna som kan användas för att lagra data och fråga dem i realtid. Den är baserad på Apache Lucene och är skriven i Java. Precis som Elasticsearch stöder den databasfrågor via REST API: er. Det betyder att vi kan använda enkla HTTP-samtal och använda HTTP-metoder som GET, POST, PUT, DELETE etc. för att komma åt data. Det ger också ett alternativ att få data i form av XML eller JSON via REST API: er.
Arkitektur: Apache Solr
Innan vi kan börja arbeta med Apache Solr måste vi förstå komponenterna som utgör Apache Solr. Låt oss ta en titt på några komponenter som den har:
Apache Solr-arkitektur
Observera att endast huvudkomponenter för Solr visas i figuren ovan. Låt oss också förstå deras funktionalitet här:
- Begär hanterare: De förfrågningar som en klient gör till Solr hanteras av en begäranhanterare. Begäran kan vara allt från att lägga till en ny post för att uppdatera ett index i Solr. Hanterare identifierar typen av förfrågan från HTTP-metoden som används med begäranmappningen.
- Sökkomponent: Detta är en av de viktigaste komponenterna Solr är känd för. Sökkomponent tar hand om att utföra sökrelaterade operationer som oklarheter, stavningskontroller, termfrågor etc.
- Fråga Parser: Detta är den komponent som faktiskt analyserar frågan som en klient skickar till begäranhanteraren och delar upp en fråga i flera delar som kan förstås av den underliggande motorn
- Svarsförfattare: Denna komponent ansvarar för att hantera utdataformatet för de frågor som skickas till motorn. Respons Writer låter oss tillhandahålla en utdata i olika format som XML, JSON etc.
- Analysator / Tokenizer: Lucene Engine förstår frågor i form av flera tokens. Solr analyserar frågan, delar upp den i flera tokens och skickar den till Lucene Engine.
- Uppdatera begäran Processor: När en fråga körs och den utför åtgärder som att uppdatera ett index och data relaterade till det, är komponenten Update Request Processor ansvarig för att hantera data i indexet och ändra det.
Komma igång med Apache Solr
För att börja använda Apache Solr måste den vara installerad på maskinen. För att göra detta, läs Installera Apache Solr på Ubuntu.
Se till att du har en aktiv Solr-installation om du vill prova exempel som vi presenterar senare i lektionen och admin-sidan kan nås på localhost:
Apache Solr-hemsida
Infoga data
För att börja, låt oss överväga en samling i Solr som vi kallar linux_hint_collection. Det finns inget behov av att definiera denna samling uttryckligen som när vi infogar det första objektet kommer samlingen att göras automatiskt. Låt oss prova vårt första REST API-samtal för att infoga ett nytt objekt i namnet på samlingen linux_hint_collection.
Infoga data
curl -X POST -H 'Content-Type: application / json''http: // localhost: 8983 / solr / linux_hint_collection / update / json / docs' --data-binary '
"id": "iduye",
"name": "Shubham"
'
Här är vad vi får tillbaka med det här kommandot:
Kommando att infoga data i Solr
Data kan också infogas med hjälp av Solr-hemsidan vi tittade på tidigare. Låt oss prova det här så att saker och ting är tydliga:
Infoga data via Solr-hemsidan
Eftersom Solr har ett utmärkt sätt att interagera med HTTP RESTful API: er kommer vi att demonstrera DB-interaktion med samma API: er framöver och kommer inte att fokusera mycket på att infoga data via Solr-webbsidan.
Lista alla samlingar
Vi kan också lista alla samlingar i Apache Solr med ett REST API. Här är kommandot vi kan använda:
Lista alla samlingar
curl http: // localhost: 8983 / solr / admin / collection?actions = LIST & wt = jsonLåt oss se utdata för det här kommandot:
Vi ser två samlingar här som finns i vår Solr-installation.
Få objekt efter ID
Låt oss nu se hur vi kan få data från Solr-samlingen med ett specifikt ID. Här är REST API-kommandot:
Få objekt efter ID
curl http: // localhost: 8983 / solr / linux_hint_collection / get?id = iduyeHär är vad vi får tillbaka med det här kommandot:
Få all data
I vårt senaste REST API frågade vi data med ett specifikt ID. Den här gången kommer vi att få all information närvarande i vår Solr-samling.
Få objekt efter ID
curl http: // localhost: 8983 / solr / linux_hint_collection / select?q = *: *Här är vad vi får tillbaka med det här kommandot:
Observera att vi har använt '*: *' i frågeparametern. Detta anger att Solr ska returnera all data som finns i samlingen. Även om vi har specificerat att all data ska returneras förstår Solr att samlingen kan ha en stor mängd data i sig och så, den returnerar bara de första tio dokumenten.
Ta bort all data
Hittills har alla API: er vi försökt använt ett JSON-format. Den här gången kommer vi att försöka XML-frågeformat. Att använda XML-format liknar extremt JSON eftersom XML också är självbeskrivande.
Låt oss prova ett kommando för att ta bort all data vi har i vår samling.
Ta bort all data
curl "http: // localhost: 8983 / solr / linux_hint_collection / update?commit = true "-H" Content-Type: text / xml "--data-binary" *: * "Här är vad vi får tillbaka med det här kommandot:
Ta bort all data med XML-fråga
Om vi igen försöker få all data kommer vi att se att ingen data är tillgänglig nu:
Få all data
Totalt antal objekt
För ett slutligt CURL-kommando, låt oss se ett kommando med vilket vi kan hitta antalet objekt som finns i ett index. Här är kommandot för samma:
Totalt antal objekt
curl http: // localhost: 8983 / solr / linux_hint_collection / query?felsöka = fråga & q = *: *Här är vad vi får tillbaka med det här kommandot:
Räkna antalet objekt
Slutsats
I den här lektionen tittade vi på hur vi kan använda Apache Solr och skicka frågor med curl i både JSON- och XML-format. Vi såg också att Solr-adminpanelen är användbar på samma sätt som alla curl-kommandon vi studerade.