Documento di ricerca sulla selezione dei motori di ricerca
Introduzione a Elasticsearch*
Elasticsearch è un motore di ricerca e analisi distribuito in tempo reale. Ti aiuta a elaborare dati su larga scala più velocemente che mai.
Può essere utilizzato per la ricerca full-text, la ricerca strutturata e l'analisi dei dati e, naturalmente, puoi combinare tutte e tre.
Elasticsearch è un motore di ricerca costruito sul motore di ricerca full-text Apache Lucene™, che può essere considerato il framework open source più avanzato ed efficiente disponibile oggi.
Ma Lucene è solo un framework, e per sfruttare appieno le sue funzionalità, devi usare JAVA e integrare Lucene nel tuo programma. Ci vuole molto imparare per capire come funziona, e Lucene è davvero complicata.
Elasticsearch utilizza Lucene come motore interno, ma quando lo utilizza per la ricerca full-test, basta usare un'API unificata senza comprendere i complessi principi operativi di Lucene che la sostengono.
Ovviamente, Elasticsearch non è semplice come Lucene, non solo include funzioni di ricerca in testo intero, ma può anche svolgere i seguenti compiti:
- Archiviazione distribuita in tempo reale e indicizzazione di ogni campo in modo che possa essere ricercato.
- Motore di ricerca distribuito con analisi in tempo reale.
- Può scalare su centinaia di server per gestire petabyte di dati strutturati o non strutturati.
Con così tante funzionalità integrate in un unico server, puoi facilmente comunicare con l'API RESTful di ES tramite il client o uno qualsiasi dei tuoi linguaggi di programmazione preferiti.
Iniziare con Elasticsearch è molto semplice. Ha molti parametri predefiniti molto ragionevoli, il che lo rende un buon modo per i principianti di evitare di dover affrontare teorie complesse appena iniziano.
È installato e pronto all'uso, e può essere molto produttivo con un piccolo costo di apprendimento.
Man mano che impari di più, potrai anche sfruttare funzionalità più avanzate di Elasticsearch, e l'intero motore può essere configurato in modo flessibile. Puoi personalizzare il tuo Elasticsearch in base alle tue esigenze.
Casi d'uso:
- Wikipedia usa Elasticsearch per effettuare ricerche in testo completo e evidenziare parole chiave, oltre a suggerimenti di ricerca come cerca-as-tas-digitare e "faceva-voleresti".
- The Guardian utilizza Elasticsearch per elaborare i registri visitatori, così che gli editori possano essere informati in tempo reale delle reazioni pubbliche ai diversi articoli.
- StackOverflow combina la ricerca in testo completo con la geolocalizzazione e le informazioni rilevanti per fornire una rappresentazione delle domande relative a più simili a questo.
- GitHub utilizza Elasticsearch per recuperare più di 130 miliardi di righe di codice.
- Ogni giorno, Goldman Sachs lo utilizza per indicizzare 5TB di dati, e molte banche d'investimento lo usano per analizzare i movimenti del mercato azionario.
Ma Elasticsearch non è solo per grandi imprese, ha anche aiutato molte startup come DataDog e Klout ad ampliare le proprie capacità.
Pro e contro di Elasticsearch**:
merito
- Elasticsearch è distribuito. Non sono necessari altri componenti e la distribuzione è in tempo reale, nota come "replicazione Push".
- Elasticsearch supporta completamente la ricerca quasi in tempo reale con Apache Lucene.
- La gestione della multitenancy non richiede configurazioni particolari, mentre Solr richiede impostazioni più avanzate.
- Elasticsearch utilizza il concetto di Gateway per facilitare il backup.
- Ogni nodo forma una struttura di rete uguale e, quando alcuni nodi falliscono, altri nodi vengono automaticamente assegnati a lavorare al loro posto.
mancanza
- Solo uno sviluppatore (l'attuale organizzazione Elasticsearch su GitHub è più di questo, ha già dei manutentori piuttosto attivi)
- Non abbastanza automatico (non adatto all'attuale nuova API di riscaldamento dell'Indice)
Informazioni su Solr*
Solr (pronunciato "solar") è una piattaforma di ricerca open source per aziende dedicata al progetto Apache Lucene. Le sue principali caratteristiche includono la ricerca a testo completo, il hit marking, la ricerca sfaccettata, il clustering dinamico, l'integrazione di database e l'elaborazione di testo arricchito (ad esempio, Word, PDF). Solr è altamente scalabile e fornisce ricerca distribuita e replica dell'indice. Solr è il motore di ricerca enterprise più popolare, e Solr4 aggiunge anche il supporto NoSQL.
Solr è un server di ricerca a testu completo e standalone scritto in Java che gira su un contenitore servlet come Apache, Tomcat o Jetty. Solr utilizza la libreria di ricerca Lucene Java come base per l'indicizzazione e la ricerca del testo completo, e dispone di API HTTP/XML e JSON simili a REST. Le potenti capacità di configurazione esterna di Solr rendono facile adattarsi a molti tipi di applicazioni senza la codifica Java. Solr ha un'architettura di plugin per supportare personalizzazioni più avanzate.
A causa della fusione dei progetti Apache Lucene e Apache Solr nel 2010, i due progetti sono stati creati e realizzati dallo stesso team di sviluppo della Apache Software Foundation. Per quanto riguarda tecnologia o prodotti, Lucene/Solr o Solr/Lucene è lo stesso.
Pro e contro di Solr:
merito
- Solr ha una comunità più ampia e matura di utenti, sviluppatori e contributori.
- Supportano l'aggiunta di indici in più formati, come HTML, PDF, formati software Microsoft Office e formati di testo semplice come JSON, XML, CSV, ecc.
- Solr è relativamente maturo e stabile.
- La ricerca durante l'indicizzazione non viene presa in considerazione, e la velocità è più veloce.
mancanza
- Quando l'indice viene stabilito, l'efficienza della ricerca diminuisce e l'efficienza della ricerca in tempo reale dell'indice non è elevata.
Elasticsearch vs Solr*
Solr è più veloce semplicemente cercando dati esistenti.
Quando si indicizza in tempo reale, Solr causa blocco delle IO e scarse prestazioni delle query, che Elasticsearch ha un chiaro vantaggio.
Con l'aumentare della quantità di dati, l'efficienza di ricerca di Solr diminuisce, mentre Elasticsearch non cambia in modo significativo.
In sintesi, l'architettura di Solr non è adatta alle applicazioni di ricerca in tempo reale.
Test di produzione nel mondo reale*
La figura qui sotto mostra un aumento di 50 volte della velocità media delle query dopo il passaggio da Solr a Elasticsearch.
Riassunto del confronto tra Elasticsearch e Solr
- Entrambi sono facili da installare;
- Solr sfrutta Zookeeper per la gestione distribuita, mentre Elasticsearch stesso ha la gestione dell'orchestrazione distribuita;
- Solr supporta più formati di dati, mentre Elasticsearch supporta solo formati di file JSON;
- Solr fornisce ufficialmente più funzionalità, mentre Elasticsearch stesso si concentra maggiormente sulle funzioni principali, e le funzioni avanzate sono per lo più fornite da plugin di terze parti.
- Solr supera Elasticsearch nelle applicazioni di ricerca tradizionali, ma è significativamente meno efficiente di Elasticsearch nella gestione di applicazioni di ricerca in tempo reale.
- Solr è una soluzione potente per le applicazioni di ricerca tradizionali, ma Elasticsearch è più adatto alle nuove applicazioni di ricerca in tempo reale.
Altre soluzioni di motori di ricerca open source basate su Lucene*
1: Usare direttamente Lucene
Nota: Lucene è una libreria di ricerca JAVA che non è una soluzione completa di per sé e richiede ulteriori sforzi di sviluppo.
Vantaggi: soluzione matura con molti casi di successo. Progetti di alto livello Apache che continuano a progredire rapidamente. Grande e attiva comunità di sviluppatori, un gran numero di sviluppatori. È semplicemente una libreria di classi, con abbastanza spazio per personalizzazione e ottimizzazione: dopo una semplice personalizzazione, può soddisfare la maggior parte delle esigenze comuni; Ottimizzato per supportare 1 miliardo + ricerche.
Contro: Richiede uno sforzo di sviluppo aggiuntivo. Tutta la scalabilità, distribuzione, affidabilità, ecc. devono essere implementate da te; Nel non-tempo reale, c'è un ritardo temporale tra indicizzazione e ricerca, e la scalabilità dell'attuale schema di ricerca "Lucene Near Real Time search" deve essere ulteriormente migliorata
Il login del link ipertestuale è visibile.
2:Katta
Nota: Supporto basato su Lucene: sistema di ricerca distribuito, scalabile, tollerante ai guasti e quasi in tempo reale.
Pro: distribuito all'uso con Hadoop. Ha un meccanismo di scalabilità e tolleranza ai guasti.
Svantaggi: è solo una soluzione di ricerca, e devi comunque implementare la parte indicizzazione da solo. In termini di funzione di ricerca, vengono soddisfatti solo i bisogni più basilari. Ci sono meno storie di successo e la maturità del progetto è leggermente inferiore. Poiché deve supportare la distribuzione, sarà difficile personalizzarlo per requisiti complessi di query.
Il login del link ipertestuale è visibile.
3:Contrib/indice Hadoop
Nota: la modalità Map/Reduce, una soluzione di indicizzazione distribuita, può essere utilizzata con Katta.
Vantaggi: indicizzazione distribuita e scalabilità.
Svantaggi: Solo lo schema di indicizzazione, non l'implementazione della ricerca. Funziona in modalità batch con scarso supporto per la ricerca in tempo reale.
Il login del link ipertestuale è visibile.
4: La soluzione open-source di LinkedIn
Descrizione: Una gamma di soluzioni basate su Lucene, tra cui Zoie per la ricerca quasi in tempo reale, Bobo per la ricerca di facet, Decomposer per algoritmi di machine learning, Krati per repository di riassunto, Sensei per l'avvolgimento di schema di database e altro ancora
Vantaggi: Soluzione comprovata che supporta un'implementazione distribuita, scalabile e ricca di funzionalità
Contro: troppo strettamente collegato all'azienda LinkedIn e scarsa personalizzazione
Il login del link ipertestuale è visibile.
5:Lucandra
Nota: Basandosi su Lucene, l'indice esiste nel database Cassandra
Pro: Fai riferimento ai vantaggi di Cassandra
Contro: Fai riferimento agli svantaggi di Cassandra. Inoltre, questa è solo una demo e non è stata ampiamente verificata
Il login del link ipertestuale è visibile.
6:HBasene
Nota: Basandosi su Lucene, l'indice esiste nel database HBase
Benefici: Fai riferimento ai vantaggi dell'HBase
Svantaggi: Fai riferimento agli svantaggi dell'HBase. Inoltre, nell'implementazione, i termini lucene sono memorizzati come righe, ma le liste di pubblicazione corrispondenti a ciascun termine sono memorizzate come colonne. Man mano che il numero di liste di pubblicazione per un singolo termine aumenta, la velocità della query sarà fortemente influenzata
Il login del link ipertestuale è visibile.
7: Xunsearch
Nota: Xunsearch adotta un design gerarchico strutturato, che include servizi back-end e pacchetti di sviluppo front-end, con gerarchie chiare e senza intersezioni. Il backend è un daemon scritto in C/C++, mentre il frontend utilizza PHP, il linguaggio di scripting più popolare, più comodo per i progetti di ricerca web. Per i dettagli, vedi Architettura Progettazione.
Il login del link ipertestuale è visibile.
|