Comience con el cliente Elastic Search NodeJs
ES: Búsqueda elástica
requisitos previos
¿Qué es la búsqueda elástica? ¿Cómo funciona la búsqueda elástica? ¿Crear un nuevo índice con mapeo y configuraciones en Elastic Search?En nuestros artículos anteriores sobre Elastic Search, aprendimos sobre los conceptos básicos de Elastic Search, cómo funciona y cómo crear un nuevo índice. En este artículo, continuaremos trabajando con el cliente Elastic Search NodeJS y exploraremos cómo indexar documentos nuevos, actualizar documentos indexados existentes y eliminar documentos indexados. Al comprender estas características, podemos usar Elastic Search de manera más efectiva para administrar y actualizar los datos en nuestros proyectos. Comencemos y veamos cómo funcionan estas funciones en acción.
Todos los ejemplos a continuación se basan en el cliente ES Node .
Instalación
Puede usar el paquete npm Elastic Search en su aplicación nodejs.
npm install @elastic/elasticsearch
Nuestro clúster ES está configurado con la seguridad explícitamente deshabilitada , por eso podemos conectarnos a través de HTTP.
import { Client, errors } from '@elastic/elasticsearch';
const client = new Client({
node: 'http://example.com'
});
Todas las demás referencias relacionadas con ES se pueden obtener aquí .
Silbido
Para comprobar que el cliente ES está conectado con un clúster http definido, realice una acción de 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: {}
});
};
Compruebe si el índice existe o no.
async indexExists(indexName: string) {
return this.client.indices.exists({
index: indexName,
});
};
Antes de agregar cualquier documento al índice, se recomienda actualizar la configuración del índice y agregar los analizadores requeridos según su funcionalidad de búsqueda. Aquí hay un ejemplo de configuración de índice:
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',
},
}
});
};
Agregar asignaciones
Antes de agregar cualquier documento al índice, se recomienda actualizar la configuración del índice, luego actualizar las asignaciones de índice y asignar propiedades del analizador con campos. Este es un ejemplo de asignaciones de índice:
Al actualizar la configuración, agregamos un autocompleteanalizador que podemos definir en las asignaciones como propiedad de búsqueda. El mapeo de índices puede ser diferente para diferentes índices.
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' },
},
},
});
};
Agregar documento
Existen diferentes formas de agregar documentos en un índice:
Documento único
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
});
};
Actualizar documento único: actualiza un documento con un guión o un documento parcial.
client.update(...)
client.updateByQuery(...)
Eliminar un solo documento
async deleteDocument(indexName: string, id: string) {
return this.client.delete({
index: indexName,
id,
});
};
Eliminar documento único: actualiza un documento con un guión o un documento parcial.
client.delete(...)
client.deleteByQuery(...)
Cliente JavaScript de Elasticsearch [8.5] | Elástico
Referencia de la API | Cliente JavaScript de Elasticsearch [8.5] | Elástico
Ejemplos | Cliente JavaScript de Elasticsearch [8.5] | Elástico
Crear un analizador personalizado | Guía de búsqueda elástica [8.5] | Elástico
Referencia del analizador incorporado | Guía de búsqueda elástica [8.5] | Elástico
Tipos de datos de campo | Guía de búsqueda elástica [8.5] | Elástico
Espero que haya disfrutado leyendo sobre Elastic Search y cómo se puede usar para optimizar la búsqueda y el análisis en varias aplicaciones. Si este artículo le resultó útil o tiene más preguntas, no dude en comunicarse conmigo a través de los comentarios.
Para obtener más actualizaciones e información sobre las últimas tendencias tecnológicas, asegúrese de seguirme en Twitter o LinkedIn . Gracias por leer, y espero conectarme con usted en las redes sociales.
Gorjeo :https://twitter.com/geekfarmer_
Linkedin :https://www.linkedin.com/in/geekfarmer

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































