Quando si tratta di motori di ricerca open source, Solr ed Elasticsearch sono sempre ai primi posti nei test e nei sondaggi. Ed entrambi i server di ricerca sono basati sulla libreria Apache Java Lucene. Lucene è una base stabile. La biblioteca indicizza le informazioni in modo flessibile e fornisce rapidamente risposte a complesse richieste di ricerca. Su questa base, entrambi i motori di ricerca funzionano in modo convincente. Ciascuno dei due progetti è inoltre sostenuto da un’attiva community.
Il team di sviluppo di Elasticsearch lavora con GitHub, mentre Solr ha origine nella Apache Foundation. In confronto, il progetto Apache vanta una lunga storia alle proprie spalle e la community documenta tutti i cambiamenti, le caratteristiche e i bug già dal 2007. La documentazione di Elasticsearch è di gran lunga meno completa, cosa che viene infatti criticata. Tuttavia, Elasticsearch non ha niente da invidiare ad Apache in termini di usabilità.
Con Elasticsearch potete costruire la vostra libreria in pochi passi. Per le funzioni aggiuntive sono necessari invece plug-in premium. In questo modo è possibile gestire le impostazioni di sicurezza, monitorare il server di ricerca o analizzzare le metriche. Il server di ricerca raccoglie intorno a sé anche una famiglia di prodotti ben coordinata. Sotto l’etichetta Elastic Stack e X-Pack si ottengono gratuitamente alcune funzioni di base. I pacchetti premium sono disponibili invece solo con un abbonamento mensile, con una licenza per nodo. Solr, d’altra parte, è sempre gratuito, incluse le estensioni come Tika e Zookeeper.
I due motori di ricerca si differenziano principalmente riguardo ai loro punti focali: sia Solr che Elasticsearch possono essere utilizzati sia per piccoli set di dati che per big data, che sono distribuiti in diversi ambienti. Ma mentre Solr si concentra sulla ricerca testuale, il concetto di Elasticsearch combina la ricerca con l’analisi. Le metriche e i log sono elaborati dal servlet fin dall’inizio. Elasticsearch gestisce facilmente le corrispondenti quantità di dati, perché il server integra dinamicamente core e frammenti, e questo già dalla prima versione.
Elasticsearch era più avanti rispetto al concorrente Solr da questo punto di vista, ma da alcuni anni anche il cloud Solr consente la classificazione delle sfaccettature. Nei dati dinamici, Elasticsearch rimane ancora un passo avanti, d’altra parte il concorrente lo batte sui dati statici, fornendo risultati mirati per la ricerca full-text e calcolando in modo esatto i dati.
I vari concetti di base si riflettono anche nel caching: entrambi i fornitori consentono in linea di principio il caching delle richieste. Se una query utilizza variabili booleane complesse, entrambi memorizzano gli elementi index richiamati in segmenti, che possono fondersi in segmenti più grandi. Tuttavia, se si cambia solo un segmento, Apache Solr deve invalidare l’intera cache globale e ricaricarla. Elasticsearch invece limita questo processo al sottosegmento interessato. In questo modo si risparmiano tempo e spazio di archiviazione.
Se si lavora regolarmente con XML, http e Ruby, ci si abitua senza problemi anche a Solr. JSON, invece, è stato aggiunto successivamente tramite un’interfaccia. Ecco perché la lingua e il servlet non si adattano ancora perfettamente. Elasticsearch invece comunica nativamente tramite JSON. Il server di ricerca integra altri linguaggi come Python, Java, .NET, Ruby e PHP con un’interfaccia simile a REST.