Press "Enter" to skip to content

GOTO 2014 • Designing & Evolving a User-oriented API in Elasticsearch • Shay Banon


quindi parlerò di elasticsearch it
iniziato come un discorso sulle API e
in che modo abbiamo evoluto l’api
elasticsearch ma poi ho scoperto che a
grande motivo per cui le API sono così
successo nel nostro successo è che tu
sapere come funziona anche nel
sistemi interni di esso come come lo fa
lavora internamente e come espone e
come funziona internamente e poi attraverso
che cosa cosa riflette quando
arriva ad usare l’API come loro stessi e
Ero come il dare loro di più
colloqui tecnici qui, quindi sarà un po ‘
più tecnico ora quindi cominciamo
elasticsearch che cosa fa
Non so quante persone qui usano il
elasticsearch quante persone qui usano
la scena così elasticsearch di cosa si tratta
è una ricerca distribuita in tempo reale e
sistema di analisi molto molto semplice che siamo
Non parlerò esattamente su come usare
esso
parleremo di come funziona
in pratica e attraverso quello stiamo andando
per capire perché le caratteristiche che noi
esporre in una ricerca come funzionano e
perché è così utile per qualche uso
casi che ovviamente cerchi di fare
i tuoi dati così ovviamente il primo passo
che elasticsearch fa è testo
ricercabile giusto è un motore di ricerca
questo è come il testo sembra giusto così se
Voglio andare e provare a cercare attraverso
quel testo tipicamente quello che le persone fanno è
sai che è nel mio database che è
bene farò solo una query simile e giusto
eseguirlo e tutto andrà bene, ma
questo è effettivamente lento e inflessibile
inflessibile giusto è che deve andare
in senso inverso il testo completo lo sai
cerchi di trovare le partite e se lo berrai
non tiene conto della pertinenza in
va bene se un documento è di più
rilevante di un altro per la mia ricerca
termine mi piacerebbe vederlo apparire
più in alto nella mia risposta alla ricerca, quindi facciamolo
prendi questi testi e vedi a cosa serve
cosa fa realmente un motore di ricerca
primo passo che fa un motore di ricerca
prende il testo e
Drex giù in token o termini se
hai familiarità con sciolto in elastico
cercare questo è effettivamente il
il processo di analisi prende questo testo
e romperlo in qualche modo in termini che è un
intero grande argomento ovviamente linguaggio
Arrestare le cose su queste linee arriva
in gioco ma una volta che ha quei termini
costruisce effettivamente un tavolo e quello
tabella è composta dai termini sul
lato sinistro ordinato in base al modo in cui vedi
che sono effettivamente ordinati e
dove si verificano si verificano nel
documentare così esattamente gli ID del documento
che si verificano internamente all’interno
il motore di ricerca e poi come facciamo noi
eseguire una ricerca bene è molto semplice
andiamo e troviamo i termini rilevanti
che cercavano e attraverso di loro
trova i documenti pertinenti che corrispondono
oggi questo è effettivamente un invertito
indice e questa è le cose meravigliose
che le persone non necessariamente
capisci immediatamente cosa succede in a
motore di ricerca che lo è effettivamente
conta quasi tutto come se fosse
pensi a un sistema che conta
tutto ciò che è il termine frequenze
per esempio per fare rilevanza
qual è la lunghezza del testo per fare
peso del bacino che svolge ovviamente un ruolo
un ruolo importante quando si tratta di rilevanza
termini ancora una volta posizione per fare
cose come le query a frase mi hanno trovato
una query che corrisponde a questo termine accanto a
quel termine
stanno ovviamente Charl offset al fine
fare l’evidenziazione ma l’indice invertito è
non solo per la ricerca di un indice invertito
in particolare abbiamo visto anche il supporto
indicizzazione numeri date che sono
conta effettivamente un booleano ora
boolean in arms geo points forme geografiche
cosa hai ragione voglio dire che puoi costruire
un intero ecosistema di un tipo di set di dati
che si dispone che giocherà un ruolo nel
quell’indice invertito e uno interessante
aspetto che quella gente non ha
necessariamente realizzare è il fatto che
tutto è indicizzato in modo efficace
non vedi né in una ricerca di risorse di
di default quindi per esempio se prendi a
documento che contiene 100 campi
tutti sono indicizzati a cui pensare
prendere un database con una tabella di database
avendo cento colonne e mettendo un
indice su tutti loro che è praticamente
giusto non lo farai l’altro
parte che è interessante con il modo
che un motore di ricerca funziona e invertito
indicizzare in modo specifico quando si effettua una ricerca
attraverso più campi tutti questi
gli indici entrano in gioco e questo è un altro
aspetti molto importanti del perché sono
indice invertito e perché il motore di ricerca è
così veloce a destra non se lo guardi
database tipici e si esegue a
query su più colonne non tutte
di questi indici entrerà in gioco
forse uno forse due, ma in genere
quindi questa è un’altra grande ragione per cui
quando esegui ricerche sulla nostra ricerca
anche ricerche complesse e coinvolge
più ricerche di più campi sono
ancora estremamente veloce ma la ricerca non lo è
abbastanza o conosci la ricerca full-text o
ricerche numeriche o qualcosa del genere
quelle linee
e questo è molto essenziale per ciò in cui crediamo
in una ricerca di risorse questo non è sufficiente o
perché consideriamo le ricerche più da essere
completamente onesto penso che la ricerca e
Compasso con analitica innata e il
la ragione è molto semplice
immagina l’indicizzazione di Twitter yeah molto facile
esempio da rompere e stai eseguendo
una sorta di ricerca che dicono andare
Amsterdam e tutti qui sono professionisti
utenti di philic twitter, ovviamente, tu usi
il go in un hashtag di Amsterdam molto e
si esegue una ricerca e si trova a
miliardi di documenti ora puoi andare e
presenta quei tweet in una lista con a
pagina e si può persone possibile scorrere
attraverso di esso, ma non è molto
Bene, non lo farò
in grado di andare e fare clic su Avanti prossimo prossimo prossimo
stiamo cercando di capire cosa sta succedendo
su di te vuoi presentarlo in più
modo digeribile per esempio prendi tutto
di quei tweet e li mostra su un grafico
quindi posso vedere come twittano su di te
conoscere un’ora per ora o un minuto entro
minuto o qualcosa del genere così
questa è una grande parte che vediamo
come una grande parte importante quando si tratta di
eseguendo per costruire una buona ricerca
motore in realtà fornendo questo
funzionalità quindi come facciamo analytics
in una ricerca di risorse, se ricordi
prima di prendere i termini e mapparli a
ID dock scrivere o valori e mapparli a
dock I disturba l’ID del dock vero e proprio
corrispondenza per l’analisi , in realtà abbiamo bisogno del
dall’altra parte dell’equazione abbiamo bisogno del
possibilità di mappare gli ID dock ai valori così come
cerchiamo nella scena ad esempio a
scena dal vivo ci dice oh questo discorso sarei
abbinati dobbiamo andare e ora correre
l’analisi su di esso una sorta di un
aggregazione e tale aggregazione lo farà
dovremo prendere il molo alla fine
ricondurlo ai valori per poterlo fare
che questo è se ci pensi
processo di indice nutritivo poco invitante
prendendo esattamente ciò che ha nella costruzione
il contrario di oggi in una risorsa
cercare il comportamento predefinito è memorizzare nella cache
quei valori in memoria e noi lo chiamiamo
dati sul campo quindi questo è il modo in cui lo trattiamo
prendiamo un piccolo valore nella cache
memoria per avere un accesso molto molto veloce
immagina di eseguire una richiesta di ricerca
attraverso due miliardi di documenti e come te
mappali che devi essere in grado di eseguire
quelle operazioni super veloci perché
farai il miliardo di volte giusto
arriva a un punto in cui anche usando
una normale mappa hash è troppo lenta per farlo
fallo e ovviamente ricordalo
ampio quindi abbiamo dati specifici
strutture strutture dati specializzate
al fine di fare tutto quel tipo di
aggregazioni questa è una nota a margine che c’è
anche un’altra opzione che è una leucina
caratteristica per memorizzare quelli che i dati che un
dati invertiti in modo efficace sul disco
si chiama valori di dock quindi se si guarda
alle basi di dati tipiche che è un colonnare
memorizzare correttamente archiviando in modo colonnare
per poterlo accedere se tu
voglio su disco in modo da non dover guardare
gonfiato a memoria, ovviamente un po ‘più lento
ma sai che potrebbe essere utile se
tu non hai abbastanza memoria così come io
menzionato l’accesso ai dati dalla ROM di nuovo
è molto molto veloce ma anche molto molto
importante è nel contesto del
gli utenti lo interrogano, ad esempio, immagina
fornendo quell’esempio di Twitter che io
ha dato e stiamo mostrando tutto il
grafico dei tweet che hai e
mettendo la casella di testo in alto così
le persone possono come per esempio
eseguire ricerche e vedere quali corrispondenze
immediatamente riflessa nel loro grafico
questo è ciò che aspiriamo a scrivere I
significa che interazioni veloci anche quando
stai facendo questa analisi pesante
in cima a volumi potenzialmente grandi di
i dati così effettivamente respira ti porta
in grado di costruire rilevanti
analisi per ogni utente giusto se tu
guarda i modi tipici che le persone costruiscono
i sistemi analitici oggi dicono che sono
andando a prevedere ciò che l’utente vuole e
Costruirò le strutture dei dati in
per costruire quella analitica giusta I
sapere che l’utente potrebbe voler fare un
tag hash quindi cercherò di trovare l’hash
tag all’interno di Twitter e forse indicizzarli
in un modo specifico per farlo
forse i punti geo forse qualcosa lungo
quelle linee ma poi diventa quasi
diritto ingestibile immagina qualcuno
voler fare un punto geografico con un hash
tag con un elenco di ID utente in Twitter
che vogliono farlo bene e poi loro
voglio vedere i risultati di analisi di esso
lentamente e lentamente diventa un po ‘
ingestibile per provare a costruire molto
motore analitico efficace ed efficiente
per farlo e questo è
efficacemente il pane e il burro di
elasticsearch ha ragione che la libertà di
affetta e taglia i dati come preferisci
Intendo molto essere in grado di aggregarlo
questo è effettivamente ciò che facciamo bene così
che tipo di aggregazioni li chiamiamo
aggregazioni tra l’altro in elasticsearch
abbiamo le metriche tipiche che tu
può pensare a contare la somma massima minima
valori medi o numerici di recente noi
aggiunti percentili e cardinalità che
sono piuttosto fantastici
ovviamente variazione standard alcuni di
fa sembrare tutti questi altri tipi di
aggregazioni che abbiamo
raggruppare efficacemente aggregando così o
li chiamiamo aggregazioni di bucket per cui
esempio puoi avere termini popolari
termini significativi vanno bene
geolocalizzazione e altre cose questo è un
nota a lato quante persone ci sono
familiare con termini significativi okay così
Posso avere una rapida collaterale su
che termini significativi
perché penso che sia abbastanza bello e
mostra l’indice Burton della linea elettrica
ha così come è arrivato un termine significativo
essere un marchio che ha lavorato con la nostra azienda
implementato questa funzione e ciò che ha visto
è che per esempio immagina di prendere il
Database criminale britannico e crimine britannico
il database include molti più dati
è importante il fatto che sia così
comprende il tipo di criminalità a
geolocalizzazione che è successo e immaginare
prendendo il Regno Unito e usando il nostro hashtag geografico
regressione per infrangerlo
aree e cercando di trovare ciò che sono
crimini più popolari che accadono nel
UK ora se gestisci questa aggregazione
significa che stai usando termini popolari
non è interessante se lo guardi
vedrete che i primi cinque crimini sono
esattamente lo stesso indipendentemente dalla posizione
destro di poppa o qualcosa del genere
d’altra parte vogliamo trovare il
crimini interessanti che accadono in
luoghi che affettuosamente lo chiamano ly raro
comuni i rari crimini comuni
all’interno di quella zona e come funziona
una volta che lo cambi e per quello che è
un semplice cambiamento dai termini a
termini significativi che inizi a vedere
i dati interessanti iniziano a scoppiare
da elasticsearch per esempio quando
abbiamo corso questo abbiamo visto che c’è un’area
nel Regno Unito che ha un’alta proporzione
e comunanza non proporzionale della bici
furti rispetto al resto del Regno Unito
e se si ingrandisce in quella posizione e
cerca di capire perché vedi che lo è
Cambridge quindi la gente cavalca un sacco di biciclette
e la gente ancora poi abbiamo visto che nel
un’altra area era di nuovo alta
quantità non proporzionale di pianto di bici
furto
mi dispiace per le cose fatte che accadono
nel Regno Unito e quando abbiamo zumato abbiamo visto
che si trattava di un aeroporto, quindi la gente lo capisce
cercato e non ho idea del perché
la gente porta un sacco di pistole al
aeroporto ma a quanto pare lo fanno e se
puoi immaginare questo tipo di abilità
è possibile solo perché in realtà tu
sembra fare il pesante dovere per noi che è
contando tutto così puoi facilmente
prendere
abbinato in un’area specifica e controllarlo
sullo sfondo proprio il
sfondo senza dati di base che tu
avere e cercare di scoprirlo comunemente
situazione comune un altro interessante
esempio l’abbiamo preso e proviamo a trovare
frode nelle carte di credito quindi immagina te
so che ci sono un sacco di credit swipes
succedendo conosci la tua carta di credito
compagnia o qualcosa del genere
e ci sono alcune persone che non conosco
intorno a quest’area che ha riportato che il
la carta di credito è stata rubata quindi se guardi
la cronologia delle loro carte di credito vedrai a
molte transazioni che non fanno
capire cosa cosa è giusto
qualcuno ha rubato la loro carta di credito e quando
lo sai pazzo ma se ci provi
trova che i termini più alti siano i più comuni
luoghi in cui hanno interagito con quello
sarà iTunes, così sarà
Netflix o Tesla sono tutte quelle linee giuste
d’ altra parte quello che voglio trovare
ecco in realtà quel negozio di bici sul
fine della strada che ogni pulsante per
andare lì e qualcuno ha installato un credito
carta
Non so coscie così, se vuoi
termini significativi che puoi effettivamente trovare
giusto che vuoi trovare il non comune
LY dati comuni stabilisce di che quindi sono
Sono super entusiasta di questo e di quello
mostra che ti piace come pensiamo ai dati
c’è un intero discorso su questo, Mike
quel marchio ha dato su cue altamente
raccomandato continuerò uno dei
aspetti interessanti che abbiamo fatto
le aggregazioni sono che le aggregazioni possono
in realtà hanno sottogruppi e sottogruppi
dentro di loro, quindi se hai familiarità con
ricerca elastica c’è molta libertà
che hai con la sua query DSL è
molto prolisso se provate a digitarlo con
adiacente ma la capacità di comporre
domande insieme è molto molto
capacità di arricchimento può effettivamente decidere
oh ecco una domanda in cui la inserirò
un’altra query e quindi filtrare qualcosa
e lo avvolgo in un’altra query e
filtralo con qualcos’altro e così via
e così via se ti ricordi in elastico
ricerca il modulo sfaccettature
che è stato utilizzato per l’analisi che non è possibile
fallo
così le aggregazioni ti permettono di fare davvero
che ti permettono di comporre diversi
aggregazioni insieme così puoi
in realtà quattro è possibile per esempio nel
UK esempio crimine che io vi darò possibile
effettivamente eseguito un’aggregazione griglia geo hash
ciò include al suo interno un significativo
termine segregazione in modo da poter trovare il
termini significativi all’interno di ciascuna area in
Regno Unito, va bene, ma come funziona in
pratica come funziona
lo sai internamente nella scena, facciamolo
inizia dalla scena quindi prima di tutto
questo è un indice invertito in qualche modo noi
avere una serie di documenti si sa JSON
documenti per esempio e devono
finiscono per essere in un indice di New Britain così
la prima cosa che è necessario
capire è quella parte del
l’indice invertito è immutabile e questo è
molto molto importante prima di tutto è
molto amichevole con cache come non lo facciamo noi
vergognare la stessa posizione del filesystem o
qualcosa lungo quelle linee
il sistema operativo può nasconderlo
di esso nella cache del file system o cosa
hai
legge dalla ROM molti dei dati ha
strutture di dati molto avanzate internamente
nella scena per farlo proprio
molto efficiente sia in termini di memoria
utilizzo e tempi di esecuzione se si memorizza nella cache
cose che sono associati con esso da
per esempio i nostri dati sul campo da
indietro quando stiamo facendo analisi loro
non cambiamo mai così non abbiamo noi no
devi preoccuparti di come fai a mantenere
la coerenza della cache è efficace
immutabile
ovviamente è comprimibile perché una volta
abbiamo tutti i dati che possiamo effettivamente fare
cose interessanti sulla compressione
set di dati comuni e non ha alcun blocco
perché è immutabile in modo efficace quando
si cerca su di esso non ci sono serrature voi
non è necessario bloccare perché è solo
è di sola lettura ma è immutabile, quindi come
si fa ad aggiungere in modo dinamico i documenti ad esso
ecco come funziona la prima cosa
che c’è un buffer in memoria che è
nella scena stessa e come aggiungi tu
documenti ad esso esistono in quello dentro
buffer di memoria
alla fine puoi emettere un comitato in
perdere e quell’impegno lo dispiacerà
commit genererà un segmento nel file
mare che è il mini indice invertito che
abbiamo visto prima giusto
e ora abbiamo un punto di commit e questo
è ricercabile aggiungiamo più documenti a noi
rilasciare un altro segmento ora entrambi
di loro sono ricercabili va bene un altro
un’altra serie di documenti un’altra commessa
e li rendiamo ricercabili così come fa
reddito libero funziona, scrive un nuovo
segmento come abbiamo visto scrivere un nuovo commit
point it f sincronizza tutti i file che sono
rilevante per quel segmento perché è così
la conservazione persistente di esso e di esso
cancella il buffer in memoria per
essere in grado di accettare nuovi documenti che cosa è
caro qui F penso che sia carino
tipo di file system pesante di
operazioni giuste deve andare il file
sistema ora se non ha nemmeno alcun file
ottimizzazioni o non andare su disco o
hai lento girare questo o qualcosa
lungo quelle linee ora devi andare avanti
ognuno e aspetta finché non arriva
riconosciuto dal sistema operativo
potenzialmente sperabilmente dal dispositivo
autista per assicurarsi che sia lì e
tutto è completamente persistente, quindi come può
lo rendiamo più leggero questo è il
vicino agli aspetti di ricerca in tempo reale ancora in
a proposito, la stessa terra , quindi abbiamo un
buffer in memoria, ma ora lo facciamo noi
non fare commit e creare segmenti
renderlo ricercabile ma di nuovo lo facciamo
arrossisce ricercabile
un altro giro lo rende ricercabile
e ora commettiamo i dati ok ora
siamo in grado di fare le cose come pienamente persistente
disco quindi qual è lo sciacquone cosa?
lo fa è molto molto simile a a
commit invitare un nuovo segmento cancella il
buffer riapre l’indice per le ricerche
ma non c’è nessuna cosa in F giusta
perché è non garantisce
che se fai una leucine risciacqui
potrai tornare più tardi e
riaprire l’indice a questo punto solo a
commit corrente è quindi questo è
relativamente leggero, ma fresco, ma
i dati non sono al sicuro fino a quando non arrivano
sincronizzato quindi come fare per assicurarci che noi
non perdere dati usiamo un registro delle transazioni
molto comune solo nei database proprio io
aveva log delle transazioni entrambi sono molto
nomi popolari per questo, quindi abbiamo quello a
buffer di memoria con tutti i documenti
che vogliamo avere vanno in
registro delle transazioni e noi lo svuotiamo noi
avere un nuovo segmento che ora è ricercabile
entra un altro gruppo di documenti
transazionale pure con il tuo colore
è molto ricercabile ora tutto questo
è ricercabile hai un log delle transazioni
in caso di incidente a proposito dell’Alaska
dovrebbe venire e poi lo ripeteremo
il registro delle transazioni in cima a basato su
l’ultimo punto di commit e ora quando noi
emettere un commit che possiamo effettivamente avere a
corretto punto di commit di Lusine e chiariamo
il log delle transazioni in modo che possiamo iniziare a
elaborare nuovi set di dati questo è chiamato a
la ricerca elastica si aggiorna in modo che Refresh
in elastico ricco succede ogni secondo
relativamente leggero ed eseguito
la soluzione flush rende tutte le modifiche
ricercabile e di nuovo come ho detto molto
molto leggero un flush di ricerca elastico
che è parola scelta male perché
c’è una lista in flash che c’è
qualcos’altro effettivamente fa il
la leucina commette come commette correttamente
tutto cancella il log delle transazioni
persistente o persistono tutti i cambiamenti in
sciolto in se stesso ed è relativamente
pesante negli ultimi gestori di ricerca stessa
sullo sfondo tutto il processo di
emettere periodicamente tali vampate a
fare in modo che il log delle transazioni è
mantenuto a stare bene
andiamo, continuiamo, ma ne abbiamo molti
Segmenti giusti se puoi immaginare noi
continua ad aggiungere documenti e documenti
e documenti nei segmenti di sistema
continua a essere creato quando una ricerca
esegue la sua ricerca su tutto il
segmenti nella scena se ne hai uno
mille segmenti che saranno lenti
quindi vediamo come ottengono i segmenti
ridotto così qui abbiamo un segmento
segmento correttamente ricercabile che è fantastico
crea un altro segmento correttamente
ricercabile è fantastico un altro segmento
perfetto ricercabile perfetto forse noi
ne ho troppi ora, quindi c’è un processo
ora si chiama fusione che prende
quei tre segmenti e li uniscono in
un nuovo segmento che include tutto il
diversi dati che hai in quelli
tre segmenti solo in un nuovo nuovo segmento
ora ricorda che questo aiuta anche con
compressione se esistesse il termine cane
tre volte in questi tre segmenti
Esisterà solo una volta nel nuovo
segmento, quindi aiuta anche a ridurre il
dimensione dell’indice e una volta che si verifica l’ unione
e succede in background
leucine e Alaska che lo gestisce anche
con lo stesso insieme, assicurati
questo lo rende ricercabile e poi quelli
tre segmenti possono essere gettati via
c’è un sacco di inganno coinvolti
assicurandoci di mantenere quel tre
segmenti in giro per le ricerche esistenti
e solo le nuove ricerche possono visualizzare il
quelli precedenti ma tutto ciò è gestito
di nuovo da elasticsearch , aggiungiamo
tre segmenti ora abbiamo due grandi
e potenzialmente alla fine possiamo e
con un grande segmento quindi unisci processo
è stato facile farlo bastano tanti tanti piccoli
i segmenti li uniscono in un unico grande
segmenti rimuove cani eliminati i conduttori
sono sempre difficili in te visto che è
efficacemente un po ‘impostato che dice questo
questo documento ID è cancellato questo
documento che è cancellato questo documento
L’ID è cancellato ma le cancellazioni sono ancora
in giro non vengono trattati come parte
della ricerca quando si esegue un’eliminazione
e un rinfresco accade ma
ancora aggrappato intorno al
solo processo che effettivamente li lancia
via è facendo questo unire quello
efficacemente come si fonde proprio non lo fa
tenerne conto durante l’unione
processo, ma anche un singolo indice di Lucene
posso solo diventare troppo grande, ho visto
casi in cui l’indice di Lucene di 250
gigabyte o qualcosa su quelle linee
questo è piuttosto spingendolo ma
sai singolarmente che può solo diventare
troppo grande a volte hai solo bisogno di un altro
uno quindi questo è il processo in realtà
scalare e non necessariamente ridimensionare
fuori non sono necessariamente all’altezza e
questo è ovviamente abbreviando i tuoi dati
prendi un solo indice di Lucene
avrebbe mai avuto lo so 1 miliardo
documenti e scomposizione in cinque
quelli così questo è effettivamente un processo
che è relativamente trasparente in
elasticsearch e se ci puoi pensare
molti segmenti o indice di scena singolare
è un frammento e molti frammenti in a
la ricerca massiccia è un indice okay così questo
è la terminologia che usiamo in
ricerca elastica e chiedetevi un po ‘
il nodo è effettivamente un’istanza in esecuzione
di ricerca elastica che è efficace
tipicamente un server 1/1 che lo esegue e
è solo un contenitore di cocci, giusto
carica basta andare in giro e scorrere tra
loro e questa è l’unità del lavoratore fisico
che ha ancora visto l’indice che viene eseguito
ricerca ricerche distribuite
cosa-hai-tu e tutto
l’indice stesso è solo uno spazio dei nomi logico
punta solo a uno o più frammenti
potenzialmente avendo la bussola dei dati
come si calcola il frammento stesso
è effettivamente prendiamo l’ID del
documento lo abbiamo cancellato e abbiamo indicato a
mappe brevi specifiche per notare che tu
puoi anche sostituirlo per poterlo fornire
è uno schizzo con un valore di routing se tu
voglio controllare quei documenti specifici
dovrebbe vivere nello stesso frammento insieme
così come si guarda quando si tratta di
effettivamente facendo eseguire un’API se tu
per esempio, inserisci un documento con ID doc
finiremo per esempio in breve –
grazie – a causa del suo ID e del
algoritmo di hash se si tenta di ottenere un
documento con doc ID 1 di nuovo lo stesso
l’hashing funzionerà e tornerai al
relativo si cerca sulla testa altro
la mano tipicamente va a tutti i frammenti dentro
per fornirglielo in modo da ridimensionare
con elasticsearch ce ne sono molte
sforzo in una successione per iniziare in piccolo
Ho visto molti casi in cui le persone
basta iniziare con un nodo giusto
utilizzando uno script per l’accesso un sacco di
tempi in cui inizi a prendere il tuo
Registri web Apache e inizia a metterlo in fila
in elasticsearch o magari visualizzarlo
con Cubana non hai abbastanza dati
per giustificare l’avvio di un cluster a 15 nodi o
qualcosa del genere e va bene e
come dovrebbe crescere con te come tu hai
più dati e lo trovi prezioso
così facilmente basta avviare un altro nodo e come
aggiungi più nodi e chiedi al coach
inizierà automaticamente a bilanciare
quelle classifiche in giro ne prenderanno un po ‘
frammenti e spostali verso il nuovo
nodi per rendere i tuoi dati
correttamente bilanciato tra tutti i nuovi
nodi che hai se aggiungi un nuovo if
aggiungi un nuovo indice, eccetto quelli
esistono anche frammenti rilevanti e quindi
di nuovo correttamente assegnato in questo momento
tre nodi invece di un solo nodo ma
più hardware più possibilità per l’ hardware
fallimenti giusto per esempio un 3 am su a
Domenica perdi un nodo quindi cosa fai
aggiungete ridondanza fino ad ora noi
aveva solo una copia dei dati, quindi facciamolo
fare un’altra copia dei dati e
la ricerca elastica è la nozione di a
frammento primario che in realtà è questo
principale sicuro quelli che tutti i
le richieste di indicizzazione passano e
frammenti di repliche che sono effettivamente
copie del cortometraggio primario quindi se tu
iniziare con un nodo tutti i frammenti sono
primario se si aggiunge un altro nodo allora se
hai abilitato la replica allora dell’Alaska
andrà automaticamente ad assegnarli
repliche faranno recuperare i loro dati da
il primario
essere assegnato correttamente se ne aggiungi un altro
nodo ora hai un altro ribilanciamento
fattore giusto intendo che ora possiamo prenderne un po ‘
delle repliche in giro e spostarle
massima di poco prendendo primarie e mossa
proprio lì solo cocci e se a
il nodo fallisce quindi efficacemente il primo
cosa che facciamo è che hai visto che abbiamo perso un
primario là così andiamo a eleggere a
nuovo primario per essere sicuro di poterlo fare
in realtà andare e ingerire continuamente
documenti su questo nuovo primario e noi
allocare le repliche dei dati il ​​nuovo
repliche così gli elastici andranno attivamente
e prova a mantenere qualunque numero di
repliche hai configurato per avere così
non devi tornare indietro e dire oh
sai il mio my tu conosci il mio database
backup o qualcosa è andato giù ho bisogno di
andare e avviarlo attivamente al fine di
fare in modo che ancora replicato o
qualcosa lungo quelle righe, per ultimo
andrà e in base al numero di note
che noi abbiamo ti farà provare a fare
certo che hai ancora la quantità di
copie che hai configurato per avere
e poi si riequilibra efficacemente
in nodi così cariche primarie come me
accennato è appena lo rotolo tutto il documento
i cambiamenti che accadono passano attraverso il
carica primaria che sai mantenere
coerenza e inoltra tutto il nuovo
aggiornamento doc alle repliche in parallelo
il numero di primari è stato risolto per te
non può cambiare il numero di primari
che hai iniziato con un singolo indice
questa è una decisione progettuale intenzionale
c’è un intero nuovo – un discorso intero
se vuoi andare online che parla
su come progettare un interruttore in scala
anche oltre questo limite efficacemente di a
singolo del fatto che il numero di
gli agricoltori sono effettivamente fissati per uno
l’ esempio molto molto popolare è basato sul tempo
dati come Twitter dove le persone semplicemente
crea un indice al giorno in modo che tu possa
in realtà crescono anche con il volume
forse oggi ne stai ingerendo 1.000
tweets se domani stai ingerendo a
5.000 tweet in realtà forse
indice potrebbe avere senso avere di più
copie di più repliche ed essere pari
ulteriori frammenti di replica partizionati a
la copia del frammento primario viene letta
e cerca come bene e dal modo in cui in modo
se li aggiungi puoi effettivamente aggiungere
più capacità di ricerca ma è solo se
hai più hardware giusto è come
se aggiungerai altre repliche
su un elasticsearch completamente equilibrato
cluster , non aggiungerai altro
leggere la capacità è necessario aggiungere altro
hardware in modo che quelle repliche andranno e
essere assegnato lì per fare uso di
è possibile modificare il numero di repliche
in modo dinamico in modo da poter andare a un esistente
indicizzare e modificare il numero di repliche
da uno a due
un caso d’uso del design molto comune nel nostro
ricerca delle risorse, ad esempio durante l’ingestione
dati o facendo l’indicizzazione o qualcosa del genere
lungo quelle linee è di iniziare con un
indice con zero repliche quindi non lo fai
sostenere il costo dell’indicizzazione in altri
copie e una che hai finito una volta che sei
fatto con l’indicizzazione basta aumentare il
numero di repliche e questo è semplice
questo semplice consiglio dimezza il tempo
che serve per indicizzare i tuoi dati
tipicamente ma chi controlla tutto questo
quindi in una ricerca di risorse c’è
efficacemente un nodo maestro eletto e
il nodo è effettivamente in esecuzione
istanza di un elasticsearch esistente
cluster se il tuo nodo di partenza è un te
avere uno o più nodi con lo stesso
nome del cluster che funziona insieme quindi
se è con multicast o unicast
man mano che aggiungi più nodi a cui si uniscono
il cluster e con multicast o
unicast e quei nodi si uniscono e uno di
loro sono sempre eletti come un maestro il
è un bel po ‘ che penso
la miscela assicura di condividere tutto il
Stati cluster tra tutti i nodi così
questo significa che chi ha incontrato qualsiasi nodo
colpisci saprai dove reindirizzare
quelli con quella richiesta è qualcosa
saprà leggere in avanti il
richiesta al nodo pertinente
ok, come fa a farlo, quindi tutti lo sanno
dove ogni nodo sa dove ciascuno
esiste un documento questo è il cluster
stato che ho citato quindi è un cluster
informazioni di livello include il
Indica che ha i frammenti dei nodi
se usi noi elasticsearch
in realtà esporre tutti questi dati attraverso
la nostra API così posso effettivamente andare al nostro
cerca e ottieni una lista completa e un
comprensione di dove esiste
dove qualcuno è la parte che può solo
essere aggiornato dal nodo principale così
cambiare lo stato del cluster aggiungendo un nodo
viene aggiunto creando un indice qualcosa
lungo quelle linee deve essere solo gestito
dallo stato cluster viene eletto quando a
moduli cluster se si dispone di un nodo singolo
allora hai un nodo che è probabile
è padrone se aggiungi un altro nodo lui
si unisce al cluster se non lo sei se di nuovo
ti unisci a un altro nodo quindi si unisce e
identifica che c’è un altro maestro
nel cluster e si unisce semplicemente rotolare
e se il maestro fallisce l’un l’altro
il padrone sarà eletto automaticamente così
come ho detto solo il nodo principale
gestisce i cambiamenti a livello di cluster così
non gestisce cose come il livello del dock
cambiamenti o qualcosa del genere, quindi no
non lo facciamo, non dobbiamo attraversarlo
il maestro per ogni operazione
che facciamo ciò che è il risultato è
ricerca in tempo reale distribuita in
analisi che funziona allo stesso modo su
il tuo laptop questa è una cosa che noi
cercare di renderlo molto molto facile agli utenti
appena iniziato con la ricerca di chiedere ma
anche nel tuo cluster e ho visto abbastanza
grappoli considerevoli piuttosto significativi che
vengono utilizzati con la ricerca elastica
questa è una nota a margine del
raccomandazioni che abbiamo io no
sai perché non ce l’ abbiamo qui ma
a causa del maestro stesso è solo un
ruolo nel cluster al fine di creare a
cluster più resiliente noi stessi
consiglia di eseguire master dedicato
nodi una volta che il tuo cluster diventa più grande
nodi master così dedicati solo tre
nodi che è solo responsabile per il master
elezioni e poi ne hanno molte altre
nodi di dati
sai solo gestire i dati e
alakay mezzo carico al mattino acceso
in modo Chi lo utilizza
Wikipedia usa la ricerca delle risorse, siamo molto
ricerca di testo completa molto umile e orgogliosa
evidenziando la ricerca di snippet di ricerca come
digiti lavorando a stretto contatto con loro
uno degli sviluppatori di Wikipedia è stato
un fantastico contributore alla ricerca elastica
aiuta a spingere in avanti un successo
The Guardian se guarderai il
parlare lo consiglio vivamente come ultimo desiderio
può essere utilizzato come una piattaforma di analisi che
succede oggi ricorda che ora stare
onesto Stack Overflow utilizza elastico
cerca per cercare attraverso ovviamente tutto
le pertinenti domande di overflow stock
che hai github usa la ricerca elastica
come te ogni volta che cerchi su Github
tu tu stai effettivamente eseguendo un
cerca attraverso la ricerca elastica Goldman
Sachs è una ricerca per indicizzare un vicolo e
analizzare la forma che conosci vicino a cinque
terabyte di dati di log ogni giorno dal
il modo in cui il registro è molto molto interessante come a
concetto e un successore ha iniziato a
efficacemente diventare o essere usato molto in
il contesto dei blog che trovo molto
molto affascinante e penso che il
il motivo per cui accade è che il registro ha
passato a qualcosa di più di
solo i registri operativi, quindi le persone ora
aspettarsi che i registri siano più che giusti
prova a trovare i miei errori di applicazione
capita molto raramente quando vediamo oggi in
i log sono quelli che le persone indicizzano o inseriscono
log di elasticsearch dell’applicazione
registri stessi del server web che parla
ai registri dell’applicazione hanno potenzialmente
alcune metriche importanti che avvengono
ogni macchina in ricerca elastica e
allora puoi rispondere molto interessante
domande ad esempio posso correlare a
errore specifico a un cinque ad un aumento
nel mio carico sulle mie macchine specifiche
che deriva da una geolocalizzazione specifica
che ha colpito il mio sito web sono molto molto
domande interessanti che puoi ora
rispondi se metti tutti i dati
insieme in una ricerca e penso che
questo è uno dei motivi principali per cui
Alaska è lei
così tanto per la registrazione pure
questo è tutto
grazie tante saranno le brevi conversazioni
breve non so, sì 40 minuti qualsiasi
domande
ottima domanda come fa
gli aggiornamenti avvengono in modo efficace in
usin stesso è un delete o mark as
cancellato il documento precedente e
indicizzato nel tuo documento quindi è un
reindicizzare ciò che è importante ricordare
in realtà tende a non essere quello
costoso
in ogni caso è necessario rianalizzare i dati
o qualcosa del genere
e se Lucene cerca di cercare di risolvere
aggiornamenti sul posto come conosci i database
fare con b alberi o qualcosa di simile
linee perderà tutti i benefici che
ha con la mutabilità
quindi ci sono un sacco di benefici che ottieni
dal fatto che lo stesso funziona così
modo che in realtà le persone non lo fanno
necessariamente capisci immediatamente
capire l’aspetto dell’immutabilità
che in realtà vuoi che ciò accada
vuoi che sembri reindicizzare i dati così
puoi eseguire ricerche senza log così
puoi farlo è possibile creare cache che
non deve preoccuparsi della cache
coerenza ci sono tonnellate di cose che
viene con esso sì
Sì, prima di tutto non lo consigliamo
eseguire elasticsearch tra i dati
centri raccomando di correre in Alaska
all’interno dello stesso centro dati in genere
tra i data center persone come
visualizzazioni di messaggi o qualcosa del genere
linee e potremmo potenzialmente lavorare dentro
il futuro per avere un diverso tipo di
modello di replica che funzionerà bene
tra i loro centri che non lo faranno
lavoro cosa
ho bisogno
in modo che quella parte che consigliamo di eseguire
qualcosa come una coda di messaggi tra
loro e replicare le operazioni sul
altra mano se stai eseguendo un ultimo desiderio
per esempio con consapevolezza del rack o con
in Amazon tra le zone di disponibilità
allora puoi configurare la ricerca elastica
e lo chiamiamo allocazione della consapevolezza
consapevolezza puoi configurare la nostra ricerca
per assicurarsi che collochi copie di
i dati attraverso le zone di disponibilità quindi se
una zona di disponibilità scende poi da te
hanno ancora le copie dei dati
in realtà va anche un ulteriore passo avanti e
dice se una delle zone di abilità scende
puoi configurarlo per non andare e
assegnare tutte le copie di quello
zone di disponibilità nel cluster esistente
perché potrebbe sbriciolare il tuo cluster
e aspetta che ritorni e noi
dire
sì il supporto molti viene dal
scena in sé, tra l’altro, c’è molto
macchine funzionanti per supportare più
lingue principalmente intorno all’analisi
processo quindi come si fa a prendere quel pezzo di
testo che ho mostrato e romperlo
correttamente per diverse lingue
perché diverse lingue hanno
diverse regole differenti su come
rompere si può solo rompere in base al bianco
spazi in modo che ogni lingua abbia il suo
analizzatore alcuni di loro sono davvero buoni
alcuni di loro non così tanto da un punto
X garantiamo che il protocollo all’interno
i nodi saranno retrocompatibili quindi a
1.1 100 a te puoi eseguire uno o
due nodi accanto a un cluster uno così tu
può fare un riavvio a rotazione oggi in
ricerca elastica del riavvio a rotazione can
essere costoso perché anche se disabiliti
assegnazione come te vai e chiedi chiedere
ricerca okay, ho appena chiuso un nodo ma
non andare e prova ad allocare tutto il
colpi che ci sono stati perché sto andando
riportalo di nuovo noi superiamo
copiare alcuni dati esistenti tra il
primario e le repliche di quel nodo così
ci può volere più tempo di quanto tu non conosca noi
sarebbe piaciuto che stessimo lavorando
per rendere questo processo un po ‘più veloce e
allora effettivamente funzionerà un riavvio a rotazione
si spera che tu sappia molto molto veloce
e non devi aspettare molto tempo
quindi la domanda è: come fai?
questo aggiornamento documenti annidati funzionano
Nazca, certo che abbiamo una struttura JSON
è complesso e quindi ce n’è
due modi per farlo nella nostra terza ricerca
il primo è documenti nidificati o il
concetti annidati e sta prendendo il
oggetti interni in una struttura JSON e
e creare documenti e voi esterni
visto i documenti accanto ad esso così uno
il documento potrebbe finire per essere cinque o sei
documenti quindi è possibile eseguire ricerche
sarà più avanzato quando arriverà
alla relazione tra i campi all’interno
quegli oggetti
quindi perché lì perché finisce
essere 5 o 10 documenti o qualcosa del genere
così ci sono alcune garanzie che
succede ad esempio c’è una garanzia
che tutto questo succederà sempre
all’interno dello stesso segmento quindi anche durante a
segmento si fondono o qualcosa di simile a te
avere la garanzia che non lo faranno mai
diviso tra i segmenti in modo che significa
che puoi assicurarti che quando tu
aggiorna qualcosa che devi ripetere
tutti quei documenti nidificati ma a
per lo meno non dovrai entrare in a
situazione in cui si vedono risultati parziali
o qualcosa del genere se tu sul
altra mano perché esistono all’interno di a
le ricerche su singolo segmento sono super-super
veloce a destra è come ancora ancora più veloce
di unirsi in un database perché è
come va solo su un po ‘set e
trovando quelli corrispondenti c’è
si chiama un’altra caratteristica in Alaska
Parent Child dove puoi avere un genitore
documento e un documento diverso no
internamente che hanno una relazione di a
relazione genitore-figlio e quando tu
averlo finalmente in elasticsearch
assicurarsi che il genitore e il bambino
esiste all’interno dello stesso frammento usando il
meccanismo di routing automaticamente e poi
quando fai ricerche puoi eseguire
ricerche che dicono se questo genitore
ha scaricato sotto questo bambino ha questo
genitore e quindi è possibile aggiornarli
indipendentemente puoi andare e aggiornare il
genitore o stai andando ad aggiornare il bambino
questo è un po ‘più costoso anche se così
ricerche utilizzando Parent bambino sarà
più lento rispetto alle ricerche usando nidificato
documenti ma ne hai la possibilità
aggiorna solo porzioni di quel documento
invece di dover reindicizzare il tutto
documento sappiamo che speriamo di affrontare
sicurezza e delle versioni future di
elasticsearch ma vedrai come noi
lavoriamo quando affrontiamo la sicurezza che vogliamo
per assicurarci di aggiungere tutto il
caratteristiche che vengono con sicurezza
compresi gli ACL anche per ora cosa noi
Consigliamo e raccomandiamo sempre di mettere
un proxy davanti a elasticsearch e
grazie al fatto che è riposante
allora puoi aver visto persone creare
regole in quel proxy in nginx o
qualcosa del genere che consente specifici
gli utenti di accedere a indici specifici in base
sul pattern URL che hanno ringraziato
tu molto
tu

Please follow and like us: