Memulai dengan Klien Pencarian Elastis NodeJs
ES: Pencarian Elastis
Prasyarat
Apa itu Pencarian Elastis? Bagaimana Pencarian Elastis Bekerja? Buat Indeks baru dengan pemetaan dan pengaturan di Pencarian Elastis?Dalam artikel kami sebelumnya tentang Pencarian Elastis, kami belajar tentang dasar-dasar Pencarian Elastis, cara kerjanya, dan cara membuat indeks baru. Pada artikel ini, kami akan terus bekerja dengan klien Elastic Search NodeJS dan menjelajahi cara mengindeks dokumen baru, memperbarui dokumen yang sudah diindeks, dan menghapus dokumen yang diindeks. Dengan memahami fitur-fitur ini, kami dapat menggunakan Pencarian Elastis secara lebih efektif untuk mengelola dan memperbarui data dalam proyek kami. Mari kita mulai dan lihat bagaimana fungsi ini bekerja.
Semua contoh di bawah ini didasarkan pada klien ES Node .
Instalasi
Anda dapat menggunakan paket Pencarian Elastis npm di aplikasi nodejs Anda.
npm install @elastic/elasticsearch
Kluster ES kami dikonfigurasi dengan keamanan yang dinonaktifkan secara eksplisit , itulah sebabnya kami dapat terhubung melalui HTTP.
import { Client, errors } from '@elastic/elasticsearch';
const client = new Client({
node: 'http://example.com'
});
Semua referensi terkait ES lainnya bisa Anda dapatkan di sini .
Ping
Untuk memeriksa klien ES terhubung dengan kluster http yang ditentukan, lakukan tindakan 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: {}
});
};
Periksa apakah indeks ada atau tidak.
async indexExists(indexName: string) {
return this.client.indices.exists({
index: indexName,
});
};
Sebelum menambahkan dokumen apa pun untuk diindeks, sebaiknya perbarui pengaturan indeks dan tambahkan penganalisis yang diperlukan berdasarkan fungsi pencarian Anda. Berikut adalah contoh pengaturan indeks:
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',
},
}
});
};
Tambahkan Pemetaan
Sebelum menambahkan dokumen apa pun ke indeks, sebaiknya perbarui setelan indeks, lalu perbarui pemetaan indeks, dan tetapkan properti penganalisis dengan bidang. Berikut adalah contoh pemetaan indeks:
Saat memperbarui pengaturan, kami menambahkan autocompletepenganalisa yang dapat kami tentukan dalam pemetaan sebagai properti pencarian. Pemetaan indeks dapat berbeda untuk indeks yang berbeda.
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' },
},
},
});
};
Tambahkan dokumen
Ada berbagai cara untuk menambahkan dokumen dalam indeks:
Dokumen Tunggal
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
});
};
Perbarui Dokumen Tunggal: Memperbarui dokumen dengan skrip atau sebagian dokumen.
client.update(...)
client.updateByQuery(...)
Hapus satu dokumen
async deleteDocument(indexName: string, id: string) {
return this.client.delete({
index: indexName,
id,
});
};
Hapus Dokumen Tunggal: Memperbarui dokumen dengan skrip atau sebagian dokumen.
client.delete(...)
client.deleteByQuery(...)
Klien JavaScript Elasticsearch [8.5] | Elastis
Referensi API | Klien JavaScript Elasticsearch [8.5] | Elastis
Contoh | Klien JavaScript Elasticsearch [8.5] | Elastis
Buat penganalisa khusus | Panduan Elasticsearch [8.5] | Elastis
Referensi penganalisa bawaan | Panduan Elasticsearch [8.5] | Elastis
Jenis data bidang | Panduan Elasticsearch [8.5] | Elastis
Saya harap Anda menikmati membaca tentang Pencarian Elastis dan bagaimana itu dapat digunakan untuk mengoptimalkan pencarian dan analisis di berbagai aplikasi. Jika Anda menemukan artikel ini bermanfaat atau memiliki pertanyaan lebih lanjut, jangan ragu untuk menghubungi saya melalui komentar.
Untuk pembaruan dan wawasan lebih lanjut tentang tren teknologi terbaru, pastikan untuk mengikuti saya di Twitter atau LinkedIn . Terima kasih telah membaca, dan saya berharap dapat terhubung dengan Anda di media sosial.
Twitter :https://twitter.com/geekfarmer_
Linkedin :https://www.linkedin.com/in/geekfarmer

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































