Elasticsearch Tutorial per principianti

Elasticsearch Tutorial per principianti
In questa lezione, vedremo come possiamo usare ElaSticSearch e qual è il suo uso. Esamineremo a fondo varie terminologie coinvolte e inizieremo anche a lavorare con esso.

Database ElasticSearch

ElaSticSearch è uno dei database NOSQL più popolari che viene utilizzato per archiviare e cercare dati basati sul testo. Si basa sulla tecnologia di indicizzazione Lucene e consente il recupero della ricerca in millisecondi in base ai dati indicizzati.

Basato sul sito Web di Elasticsearch, ecco la definizione:

ElasticSearch è un motore di ricerca e analisi distribuita open source in grado di risolvere un numero crescente di casi d'uso.

Quelle erano alcune parole di alto livello su Elasticsearch. Comprendiamo i concetti in dettaglio qui.

  • Distribuito: ElasticSearch divide i dati che contiene in più nodi e usi Master-slave Algoritmo internamente
  • Riposante: ElaSticSearch supporta le query di database tramite API REST. Ciò significa che possiamo usare semplici chiamate HTTP e utilizzare metodi HTTP come GET, POST, PUT, ELUTE ETC. per accedere ai dati.
  • Motore di ricerca e analisi: ES supporta query altamente analitiche da eseguire nel sistema che può consistere in query aggredita e più tipi, come query strutturate, non strutturate e non strutturate.
  • Scalabile orizzontalmente: Questo tipo di asciugatura si riferisce all'aggiunta di più macchine a un cluster esistente. Ciò significa che ES è in grado di accettare più nodi nel suo cluster e non fornire tempo di inattività per gli aggiornamenti richiesti al sistema. Guarda l'immagine qui sotto per comprendere i concetti di ridimensionamento:
  • Scailing verticale e orizzontale

Introduzione al database Elasticsearch

Per iniziare a utilizzare ElaSticSearch, deve essere installato sulla macchina. Per fare questo, leggi Installa Elasticsearch su Ubuntu.

Assicurati di avere un'installazione di ElaSticSearch attiva se si desidera provare esempi che presentiamo più avanti nella lezione.

Elasticsearch: concetti e componenti

In questa sezione, vedremo quali componenti e concetti si trovano nel cuore di ElasticSearch. La comprensione di questi concetti è importante per capire come funziona ES:

  • Grappolo: Un cluster è una raccolta di macchine server (nodi) che contiene i dati. I dati sono divisi tra più nodi in modo che possano essere replicati e il punto singolo di errore (SPOF) non si verifica con il server ES. Il nome predefinito del cluster è Elasticsearch. Ogni nodo in un cluster si collega al cluster con un URL e il nome del cluster in modo che sia importante mantenere questo nome distinto e chiaro.
  • Nodo: Una macchina per nodi fa parte di un server ed è definita come una sola macchina. Memorizza i dati e fornisce funzionalità di indicizzazione e ricerca, insieme ad altri nodi al cluster.

    A causa del concetto di ridimensionamento orizzontale, possiamo praticamente aggiungere un numero infinito di nodi in un cluster ES per dargli molta più forza e capacità di indicizzazione.

  • Indice: Un indice è una raccolta di documenti con caratteristiche in qualche modo simili. Un indice è praticamente simile a un database in un ambiente basato su SQL.
  • Tipo: Un tipo viene utilizzato per separare i dati tra lo stesso indice. Ad esempio, il database/indice dei clienti può avere più tipi, come utente, payment_type ecc.

    Si noti che i tipi sono deprecati da ES V6.0.0 in poi. Leggi qui perché è stato fatto.

  • Documento: Un documento è il livello più basso di unità che rappresenta i dati. Immagina come un oggetto JSON che contiene i tuoi dati. È possibile indicizzare altrettanti documenti all'interno di un indice.

Tipi di ricerca in Elasticsearch

Elasticsearch è nota per le sue capacità di ricerca quasi in tempo reale e le flessibilità che fornisce il tipo di dati indicizzati e cercati. Cominciamo a studiare come utilizzare la ricerca con vari tipi di dati.

  • Ricerca strutturata: questo tipo di ricerca viene eseguito su dati che hanno un formato predefinito come date, tempi e numeri. Con il formato predefinito arriva la flessibilità dell'esecuzione di operazioni comuni come il confronto dei valori in una gamma di date. È interessante notare, Anche i dati testuali possono essere strutturati. Questo può accadere quando un campo ha un numero fisso di valori. Ad esempio, il nome dei database può essere, MySQL, MongoDB, ElasticSearch, Neo4j, ecc. Con la ricerca strutturata, la risposta alle query che eseguiamo è un sì o no.
  • Ricerca full-text: questo tipo di ricerca dipende da due fattori importanti, Rilevanza E Analisi. Con rilevanza, determiniamo quanto bene alcuni dati corrispondono alla query definendo un punteggio ai documenti risultanti. Questo punteggio è fornito dallo stesso ES. Analisi si riferisce a rompere il testo in token normalizzati per creare un indice invertito.
  • Ricerca multifield: con il numero di query analitiche in costante aumento sui dati memorizzati in ES, di solito non affrontiamo solo domande di corrispondenza. I requisiti sono cresciuti per eseguire query che si estendono su più campi e hanno un elenco ordinato di dati ordinato da noi dal database stesso. In questo modo, i dati possono essere presenti all'utente finale in modo molto più efficiente.
  • Corrispondenza della proimità: le query oggi sono molto più che identificare se alcuni dati testuali contengono un'altra stringa o no. Si tratta di stabilire la relazione tra i dati in modo che possano essere valutati e abbinati al contesto in cui i dati vengono abbinati. Per esempio:
    • Ball ha colpito John
    • John ha colpito la palla
    • John ha comprato una nuova palla che è stata colpita da Jaen Garden

    Una query di corrispondenza troverà tutti e tre i documenti quando viene cercato Colpo a sfera. Una ricerca di prossimità può dirci fino a che punto queste due parole appaiono nella stessa linea o paragrafo a causa della quale abbinati.

  • Corrispondenza parziale: spesso è dobbiamo eseguire query parziali. La corrispondenza parziale ci consente di eseguire query che corrispondono parzialmente. Per visualizzare questo, diamo un'occhiata a domande basate su SQL simili:

    Query SQL: corrispondenza parziale

    Dove nome come "%John%"
    E nome come "%rosso%"
    E nome come "%giardino%"

    In alcune occasioni, dobbiamo solo eseguire query parziali di partite anche quando possono essere considerate come tecniche di forza bruta.

Integrazione con Kibana

Quando si tratta di un motore di analisi, di solito dobbiamo eseguire query di analisi in un dominio Business-Intelligence (BI). Quando si tratta di analisti aziendali o analisti di dati, non sarebbe giusto supporre che le persone conoscano un linguaggio di programmazione quando vogliono visualizzare i dati presenti nel cluster ES. Questo problema è risolto da Kibana.
Kibana offre così tanti vantaggi a BI che le persone possono effettivamente visualizzare i dati con un dashboard eccellente e personalizzabile e vedere i dati in modo ineguagliabile. Diamo un'occhiata ad alcuni dei suoi vantaggi qui.

Grafici interattivi

Al centro di Kibana c'è grafici interattivi come questi:

Kibana viene supportato con vari tipi di grafici come grafici a torta, raggi di sole, istogrammi e molto altro che utilizzano le capacità di aggregazione complete di ES.

Supporto di mappatura

Kibana supporta anche la completa geo-aggregazione che ci consente di geo-map i nostri dati. Non è fantastico?!

Aggregazioni e filtri pre-costruiti

Con aggregazioni e filtri pre-costruiti, è possibile letteralmente frammento, rilasciare e eseguire query altamente ottimizzate all'interno del dashboard di Kibana. Con pochi clic, è possibile eseguire query aggregate e presentare risultati sotto forma di grafici interattivi.

Facile distribuzione di dashboard

Con Kibana, è anche molto facile condividere dashboard su un pubblico molto più ampio senza fare modifiche alla dashboard con l'aiuto della modalità Dashboard. Possiamo facilmente inserire dashboard nella nostra wiki o pagine Web interne.

Pagina del prodotto Kibana Immagini prese in forma.

Utilizzo di ElasticSearch

Per visualizzare i dettagli dell'istanza e le informazioni del cluster, eseguire il comando seguente:

Ora, possiamo provare a inserire alcuni dati in ES utilizzando il seguente comando:

Inserire dati

arricciarsi \
-X Post 'http: // localhost: 9200/linuxhint/hello/1' \
-H 'Content-Type: Application /Json' \
-d '"nome": "linuxhint"' \

Ecco cosa torniamo con questo comando:

Proviamo ora a ottenere i dati:

Ottenere dati

Curl -x Get 'http: // localhost: 9200/linuxhint/hello/1'

Quando eseguiamo questo comando, otteniamo il seguente output:

Conclusione

In questa lezione, abbiamo esaminato come possiamo iniziare a utilizzare ElaSticSearch che è un eccellente motore di analisi e fornisce un eccellente supporto per la ricerca quasi in tempo reale in tempo libero.