Elasticsearch Belirli Alanları Seç

Elasticsearch Belirli Alanlari Sec



Elasticsearch, bir arama sorgusu gerçekleştirdikten sonra bir belgedeki tüm alanları varsayılan olarak döndürür. Bu, indeksleme sırasında kayıtta depolanan tüm verileri içeren _source parametresi tarafından tanımlanır.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: raporlama'

Çıktı:







Ancak, belirli bir belgedeki tüm alanları almak istemeyebilirsiniz. Bu öğreticide, bir belgeden belirli alanların nasıl seçileceğini öğreneceksiniz.



Elasticsearch Alanları Seçeneği

Fields parametresi, bir arama isteğindeki belirli alanları almamızı sağlar. Ayrıca field parametresi, tekli veya çoklu alanları getirmemizi sağlayacaktır. Ayrıca field parametresini kullanarak tarihleri ​​ve uzamsal veri türlerini biçimlendirebilirsiniz.



Örneğin, Netflix dizininden index, id, title, release_year, listelenmiş, süre ve derecelendirme alanlarını almak istediğimizi varsayalım, aşağıda gösterildiği gibi bir sorgu çalıştırabiliriz:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: raporlama' -H 'İçerik Türü: uygulama/json' -d'
{
'sorgu': {
'kibrit': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'alanlar': [
'indeks',
'İD',
'Başlık',
'çıkış tarihi',
'listed_in',
'süre',
'değerlendirme'
],
'_source': yanlış

}'

Yukarıdaki istekte, eşleşme parametresinde belirtilen kimliğe sahip belgeyi aramak için arama API'sini kullanıyoruz.

Ardından, hedef belgeden belirli alanları getirmek için alanlar parametresini kullanırız.



Elasticsearch'ün varsayılan olarak tüm belge alanlarından oluşan _source parametresini içereceğini unutmayın. Yalnızca belirtilen alanları getirdiğimizden emin olmak için _source parametresini kapatıyoruz:

Yukarıdaki istek, gösterildiği gibi bir yanıt döndürmelidir:

{
'aldı': 1,
'zaman aşımı': yanlış,
'_shards': {
'toplam': 1,
'başarılı': 1,
'atlandı': 0,
'başarısız': 0
},
'isabet': {
'Toplam': {
'değer': 1,
'ilişki': 'eq'
},
'maks_skor': 1,
'isabet': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_skor': 1,
'alanlar': {
'listed_in': [
'Belgeseller'
],
'süre': [
'90 dk'
],
'çıkış tarihi': [
2020
],
'değerlendirme': [
'PG-13'
],
'Başlık': [
'Dick Johnson Öldü'
]
}
}
]
}
}

Bir arama sorgusundan hangi alanların döndürüleceğini tanımlamak için _source parametresini de kullanabilirsiniz. Aşağıda bir örnek gösterilmiştir:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: raporlama' -H 'İçerik Türü: uygulama/json' -d'
{
'_source': ['title', 'release_year', 'rating', 'süre'],
'sorgu': {
'terim': {
'_id': {
'değer': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

Bu durumda dizi olarak almak istediğimiz alanları source parametresinde belirtiyoruz. Yukarıdaki istek, yanıtı gösterildiği gibi döndürmelidir:

{
'aldı': 0,
'zaman aşımı': yanlış,
'_shards': {
'toplam': 1,
'başarılı': 1,
'atlandı': 0,
'başarısız': 0
},
'isabet': {
'Toplam': {
'değer': 1,
'ilişki': 'eq'
},
'maks_skor': 1,
'isabet': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_skor': 1,
'_kaynak': {
'süre': '90 dk',
'yayın_yılı': 2020,
'derecelendirme': 'PG-13',
'başlık': 'Dick Johnson Öldü'
}
}
]
}

}

Çözüm

Bu makalede, alanları ve _source parametrelerini kullanarak bir arama isteğinden belirli alanların nasıl getirileceğini öğrendiniz.

Elasticsearch ve yetenekleri hakkında daha fazla bilgi edinmek için konuyla ilgili eğiticilerimize göz atın. Yararlı bir şey bulacağınız garanti.

Okuduğunuz için teşekkürler ve bir sonrakinde görüşmek üzere!!