Come funziona la ricerca elastica?
ES: ricerca elastica
Prerequisiti
Che cos'è la ricerca elastica?Nel nostro precedente articolo , abbiamo coperto le basi di Elastic Search e i suoi vari usi. Ora, approfondiremo il funzionamento effettivo di Elastic Search. Comprendere il funzionamento interno di Elastic Search può aiutarci a utilizzare meglio le sue capacità e a risolvere eventuali problemi che potrebbero sorgere. Diamo quindi un'occhiata più da vicino a come opera Elastic Search.
Per capire come funziona ES, dovremmo conoscere alcuni concetti di base di Elastic Search.
- Concetti logici: come ES organizza i dati
- Componenti di back-end
Concetti logici:
Documenti
I documenti sono unità di informazione di base. Memorizziamo i nostri dati come documenti che possono essere oggetti JSON . Quindi, come sono organizzati questi dati nel cluster? La risposta sono gli indici. Nel mondo dei database relazionali, i documenti possono essere paragonati a una riga di una tabella che rappresenta una determinata entità.
I documenti possono essere dati di testo o strutturati codificati in JSON (i dati possono essere cose come numeri, stringhe e date)
Esempio: un documento può rappresentare un articolo di un'enciclopedia o voci di log da un server web
Indice
Gli indici ES sono partizioni logiche di documenti e possono essere paragonati a un database nel mondo dei database relazionali. Un indice è l'entità di livello più alto su cui è possibile eseguire query in ES. Ad esempio: possiamo avere un indice per casi, fornitori, veicoli, polizze.
Tipo
Ogni indice ha uno o più tipi di mappatura utilizzati per dividere i documenti in un gruppo logico. Può essere paragonato a una tabella nel mondo dei database relazionali.
Indice invertito
È progettato per consentire ricerche full-text molto veloci. Un indice invertito elenca ogni parola univoca che appare in qualsiasi documento e identifica tutti i documenti in cui ricorre ciascuna parola. È una struttura di dati simile a una hashmap che ti indirizza da una parola a un documento.
cosa succede se abbiamo un errore di battitura nella nostra query di ricerca, ad es. cosa succede se cerchiamo Jefferiesinvece di Jeffery?
Per casi come sopra, TextAnalyzer svolge un ruolo importante. Nel caso della ricerca full-text, gli analizzatori sono responsabili della tokenizzazione, della normalizzazione, dello stemming, della rimozione delle stopword dei documenti di input, ecc., in modo che i risultati della ricerca diano risultati corretti.
POST _analyze
{
"tokenizer": "letter",
"text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
[ The, QUICK, Brown, Foxes, jumped, over, the, lazy, dog, s, bone ]
Grappolo
In ES, i dati sono archiviati in nodi, ci può essere n numero di nodi in una macchina. E ogni nodo è correlato al cluster. Quindi il Cluster è un insieme di nodi
Nodo
Un nodo è un singolo server che fa parte di un cluster. Un nodo archivia i dati e partecipa alle funzionalità di ricerca e indicizzazione del cluster. Un nodo ES può essere configurato in diversi modi:
- Master Node: controlla il cluster ES ed è responsabile di tutte le operazioni a livello di cluster come la creazione/eliminazione di un indice e l'aggiunta/rimozione di nodi.
- Nodo dati: memorizza i dati ed esegue operazioni relative ai dati come la ricerca e l'aggregazione.
- Nodo client: inoltra le richieste del cluster al nodo master e le richieste relative ai dati ai nodi dati.
ES offre la possibilità di suddividere l'indice in più parti chiamate shard. Shard è proprio come un indice. Per la scalabilità. Con lo sharding, puoi archiviare miliardi di documenti all'interno di un unico indice.
Repliche
ES ti consente di creare una o più copie degli shard del tuo indice che sono chiamati "replica shard" o semplicemente "repliche". Fondamentalmente, un frammento di replica è una copia di un frammento primario. Ogni documento in un indice appartiene a uno shard primario. Le repliche forniscono copie ridondanti dei tuoi dati per proteggerti da guasti hardware e aumentare la capacità di servire richieste di lettura come la ricerca o il recupero di un documento.
Una replica è una copia del frammento primario e ha due scopi:
- Aumenta il failover : può essere promosso a primario condiviso se il primario fallisce
- Aumenta le prestazioni : le richieste di recupero e ricerca possono essere gestite da shard primari o di replica
I dati grezzi fluiscono in ES da una varietà di fonti, inclusi log, metriche di sistema e applicazioni web. L'inserimento dei dati è il processo mediante il quale questi dati grezzi vengono analizzati, normalizzati e arricchiti prima di essere indicizzati in ES. Un indice ES è una raccolta di documenti correlati tra loro. ES memorizza i dati come documenti JSON. Ogni documento correla un insieme di chiavi (nomi di campi o proprietà) con i valori corrispondenti (stringhe, numeri, booleani, date, array di valori, geolocalizzazione o altri tipi di dati).
ES utilizza una struttura di dati chiamata indice invertito, progettata per consentire ricerche full-text molto veloci. Un indice invertito elenca ogni parola univoca che appare in qualsiasi documento e identifica tutti i documenti in cui ricorre ciascuna parola.
Durante il processo di indicizzazione, ES memorizza i documenti e crea un indice invertito per rendere i dati del documento ricercabili quasi in tempo reale. L'indicizzazione viene avviata con l'API index, tramite la quale è possibile aggiungere o aggiornare un documento JSON in un indice specifico.
Riferimenti
Elasticsearch dal basso verso l'alto, parte 1
Riferimento tokenizzatore | Guida Elasticsearch [8.5] | Elastico
Normalizzatori | Guida Elasticsearch [8.5] | Elastico
Derivazione | Guida Elasticsearch [8.5] | Elastico
Spero ti sia piaciuto leggere su Elastic Search e su come funziona. Se hai trovato utile questo articolo o hai ulteriori domande, non esitare a contattarmi tramite i commenti.
Per ulteriori aggiornamenti e approfondimenti sulle ultime tendenze tecnologiche, assicurati di seguirmi su Twitter o LinkedIn . Grazie per aver letto e non vedo l'ora di connettermi con voi sui social media.
Cinguettio:https://twitter.com/geekfarmer_
LinkedIn:https://www.linkedin.com/in/geekfarmer

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































