Inizia con Elastic Search NodeJs Client
ES: ricerca elastica
Prerequisiti
Che cos'è la ricerca elastica? Come funziona la ricerca elastica? Creare un nuovo indice con mappatura e impostazioni in Elastic Search?Nei nostri precedenti articoli su Elastic Search, abbiamo appreso le basi di Elastic Search, come funziona e come creare un nuovo indice. In questo articolo, continueremo a lavorare con il client Elastic Search NodeJS ed esploreremo come indicizzare nuovi documenti, aggiornare documenti indicizzati esistenti ed eliminare documenti indicizzati. Comprendendo queste funzionalità, possiamo utilizzare in modo più efficace Elastic Search per gestire e aggiornare i dati nei nostri progetti. Cominciamo e vediamo come funzionano queste funzioni in azione.
Tutti gli esempi seguenti sono basati sul client ES Node .
Installazione
Puoi utilizzare il pacchetto npm Elastic Search nella tua applicazione nodejs.
npm install @elastic/elasticsearch
Il nostro cluster ES è configurato con la sicurezza esplicitamente disabilitata , ecco perché possiamo connetterci tramite HTTP.
import { Client, errors } from '@elastic/elasticsearch';
const client = new Client({
node: 'http://example.com'
});
Tutti gli altri riferimenti relativi a ES sono disponibili qui .
Ping
Per verificare che il client ES sia connesso al cluster http definito, eseguire l'azione ping.
client
.ping({
// ping usually has a 3000ms timeout
requestTimeout: 1000,
})
.then(() => {
this.logger.info('Elasticsearch connected');
})
.catch((err: errors.ConnectionError) => {
this.logger.error('Elasticsearch unavailable', { error: err });
});
async createIndex(indexName: string) {
return this.client.indices.create({
index: indexName,
mappings: {},
settings: {}
});
};
Controlla se l'indice esiste o meno.
async indexExists(indexName: string) {
return this.client.indices.exists({
index: indexName,
});
};
Prima di aggiungere qualsiasi documento all'indice, si consiglia di aggiornare le impostazioni dell'indice e aggiungere gli analizzatori richiesti in base alla funzionalità di ricerca. Ecco un esempio di impostazione dell'indice:
async indexSetting(indexName: string) {
return this.client.indices.putSettings({
index: indexName,
body: {
settings: {
max_ngram_diff: 19,
analysis: {
filter: {
autocomplete_filter: {
type: 'ngram',
min_gram: '1',
max_gram: '20',
},
},
analyzer: {
autocomplete: {
filter: ['lowercase', 'autocomplete_filter'],
type: 'custom',
tokenizer: 'standard',
},
},
},
number_of_replicas: '1',
},
}
});
};
Aggiungi mappature
Prima di aggiungere qualsiasi documento all'indice, si consiglia di aggiornare le impostazioni dell'indice, quindi aggiornare le mappature dell'indice e assegnare le proprietà dell'analizzatore con i campi. Di seguito è riportato un esempio di mapping degli indici:
Come durante l'aggiornamento delle impostazioni, abbiamo aggiunto autocompletel'analizzatore che possiamo definire nelle mappature come proprietà di ricerca. La mappatura dell'indice può essere diversa per indici diversi.
const searchProperty = {
type: 'text',
analyzer: 'autocomplete',
search_analyzer: 'standard',
};
async indexMapping(indexName: string) {
return this.client.indices.putMapping({
index: indexName,
body: {
properties: {
id: { type: 'keyword' },
createdAt: { type: 'date' },
updatedAt: { type: 'date' },
caseCode: searchProperty,
policyNo: searchProperty,
claimRegNo: searchProperty,
vehicleRegNo: searchProperty,
vehicleChassisNo: searchProperty,
claimStatus: { type: 'keyword' },
lossType: { type: 'keyword' },
vehicleType: { type: 'keyword' },
zone: { type: 'keyword' },
insurer: { type: 'keyword' },
caseStatus: { type: 'keyword' },
business: { type: 'keyword' },
},
},
});
};
Aggiungi documento
Esistono diversi modi per aggiungere documenti in un indice:
Unico documento
async addDocument(indexName: string, payload: DataType) {
return this.client.index({
index: indexName,
type: '_doc',
id: payload.id,
body: payload
});
};
async addBulkDocuments(indexName: data = []) {
const payload = data.map((item) => {
return [
{
index: {
_index: indexName,
_type: '_doc',
_id: item.id,
},
},
item,
]
})
return this.client.bulk({
refresh: true,
body: payload
});
};
async updateDocument(indexName: string, payload: DataType) {
return this.client.update({
index: indexName,
type: '_doc',
id: payload.id,
body: payload
});
};
Aggiorna documento singolo: aggiorna un documento con uno script o un documento parziale.
client.update(...)
client.updateByQuery(...)
Elimina un singolo documento
async deleteDocument(indexName: string, id: string) {
return this.client.delete({
index: indexName,
id,
});
};
Elimina documento singolo: aggiorna un documento con uno script o un documento parziale.
client.delete(...)
client.deleteByQuery(...)
Client JavaScript Elasticsearch [8.5] | Elastico
Riferimento API | Client JavaScript Elasticsearch [8.5] | Elastico
Esempi | Client JavaScript Elasticsearch [8.5] | Elastico
Crea un analizzatore personalizzato | Guida Elasticsearch [8.5] | Elastico
Riferimento analizzatore integrato | Guida Elasticsearch [8.5] | Elastico
Tipi di dati di campo | Guida Elasticsearch [8.5] | Elastico
Spero ti sia piaciuto leggere su Elastic Search e su come può essere utilizzato per ottimizzare la ricerca e l'analisi in varie applicazioni. 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)



































