Elastic Search NodeJs İstemcisini Kullanmaya Başlayın
ES: Esnek Arama
Önkoşullar
Esnek Arama Nedir? Esnek Arama Nasıl Çalışır? Elastic Search'te eşleme ve ayarlarla yeni bir Dizin oluşturulsun mu?Elastic Search ile ilgili önceki yazılarımızda Elastic Search'ün temellerini, nasıl çalıştığını ve yeni bir indeksin nasıl oluşturulacağını öğrenmiştik. Bu yazıda, Elastic Search NodeJS istemcisi ile çalışmaya devam edeceğiz ve yeni dokümanların nasıl indeksleneceğini, indekslenmiş mevcut dokümanların nasıl güncelleneceğini ve indekslenmiş dokümanların nasıl silineceğini keşfedeceğiz. Bu özellikleri anlayarak, projelerimizdeki verileri yönetmek ve güncellemek için Elastic Search'ü daha etkin bir şekilde kullanabiliriz. Başlayalım ve bu işlevlerin nasıl çalıştığını görelim.
Aşağıdaki tüm örnekler ES Node istemcisine dayanmaktadır .
Kurulum
npm Elastic Search paketini nodejs uygulamanızda kullanabilirsiniz.
npm install @elastic/elasticsearch
ES kümemiz, güvenlik açıkça devre dışı bırakılmış olarak yapılandırılmıştır, bu nedenle HTTP yoluyla bağlanabiliyoruz.
import { Client, errors } from '@elastic/elasticsearch';
const client = new Client({
node: 'http://example.com'
});
ES ile ilgili diğer tüm referanslara buradan ulaşabilirsiniz .
ping
ES istemcisinin tanımlı http kümesine bağlı olup olmadığını kontrol etmek için ping eylemi gerçekleştirin.
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: {}
});
};
Dizinin var olup olmadığını kontrol edin.
async indexExists(indexName: string) {
return this.client.indices.exists({
index: indexName,
});
};
Herhangi bir belgeyi dizine eklemeden önce, dizin ayarlarını güncellemeniz ve arama işlevinize göre gerekli çözümleyicileri eklemeniz önerilir. İşte bir dizin ayarı örneği:
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',
},
}
});
};
Eşleme Ekle
Herhangi bir belgeyi dizine eklemeden önce, dizin ayarlarını güncellemeniz, ardından dizin eşlemelerini güncellemeniz ve alanlarla çözümleyici özelliklerini atamanız önerilir. Dizin eşlemelerine bir örnek:
autocompleteAyarları güncellerken eşlemelerde tanımlayabileceğimiz analizörü search özelliği olarak ekledik . İndeks eşleme, farklı indeksler için farklı olabilir.
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' },
},
},
});
};
Belge ekle
Bir dizine belge eklemenin farklı yolları vardır:
Tek Belge
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
});
};
Tek Belgeyi Güncelle: Bir belgeyi komut dosyasıyla veya kısmi belgeyle günceller.
client.update(...)
client.updateByQuery(...)
Tek bir belgeyi silin
async deleteDocument(indexName: string, id: string) {
return this.client.delete({
index: indexName,
id,
});
};
Tek Belgeyi Sil: Bir belgeyi komut dosyasıyla veya kısmi belgeyle günceller.
client.delete(...)
client.deleteByQuery(...)
Elasticsearch JavaScript İstemcisi [8.5] | Elastik
API Referansı | Elasticsearch JavaScript İstemcisi [8.5] | Elastik
örnekler | Elasticsearch JavaScript İstemcisi [8.5] | Elastik
Özel bir analizör oluşturun | Elasticsearch Kılavuzu [8.5] | Elastik
Yerleşik analizör referansı | Elasticsearch Kılavuzu [8.5] | Elastik
Alan veri türleri | Elasticsearch Kılavuzu [8.5] | Elastik
Elastic Search'ü ve çeşitli uygulamalarda arama ve analizi optimize etmek için nasıl kullanılabileceğini umarım okumaktan keyif almışsınızdır. Bu makaleyi yararlı bulduysanız veya başka sorularınız varsa, lütfen yorumlar aracılığıyla bana ulaşmaktan çekinmeyin.
En son teknoloji trendleri hakkında daha fazla güncelleme ve içgörü için beni Twitter veya LinkedIn'de takip ettiğinizden emin olun . Okuduğunuz için teşekkürler ve sizinle sosyal medyada bağlantı kurmak için sabırsızlanıyorum.
twitter :https://twitter.com/geekfarmer_
Linkedin :https://www.linkedin.com/in/geekfarmer

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































