multiple search
Elasticsearch ile tek query'de birden fazla index üzerinde search etmek için mutliple search (msearch) kullanılır. Elasticsearch REST ara birimi ile bir örnek yaparak kullanımına değinelim.
Öncelikle msearch query yapısını inceleyelim. Sırayla 3 adet indeximiz için query yazalım. Daha sonra bunları birleştirelim. Bu şekilde durumu daha net anlayabiliriz.
Products (index)
Bu query'de is_active alanı 1 olan ve name alanı yeni keyword'ü ile başlayan ürünleri listeleyecektir.
Categories (index)
Bu query'de is_active alanı 1 olan ve title, description alanları yeni keyword'ü ile başlayan kategorileri listeleyecektir.
Brands (index)
Bu query'de is_active alanı 1 olan ve name, slug, type alanları yeni keyword'ü ile başlayan markaları listeleyecektir.
3 ayrı indeximiz için query'lerimizi oluşturduk şimdi bu query'leri birleştirip tek bir msearch query'si haline getirelim.
Yukarıda görüldüğü gibi her query'nin bir üst satırına hangi index'de çalıştırmak istiyorsak belirttik. Bu şekilde multiple search işlemini gerçekleştirebiliriz.
Şimdi testlerimizi yapalım. http://elastichost:port/_msearch
adresine post işlemini gerçekleştirip body içerisinde yukarıda bulunan query'mizi yazıyoruz. Buradaki püf nokta header bölümünde Content-Type: application/x-ndjson olarak tanımlamaktır. Ayrıca body içerisinde bu datayı gönderirken her satırdan sonra yeni bir satır (\n) eklenmelidir (son satır dahil). Bunun sebebi farklı indexlerde arama işlemleri yapılacağından ayrıştırmayı kolaylaştırmaktır. Yukarıda hazırladığımız query ile postman üzerinden istek attığımızda sorunsuz çalışacaktır. Şimdi çıktıyı inceleyelim.
Response
Aşağıda görüldüğü gibi 3 farklı index için kendi dökümanlarının yapısında sonuçlar elde ettik.
Sonuç
multiple search yapısı gereği biraz karışık olduğu için anlatım veya verilen query örnekleri de karmaşık gelmiş olabilir. İşin özü birden fazla index'de arama işlemini aynı anda yapmak ve tek bir response içerisinde tüm indexlerin arama sonucunu elde etmek istiyorsak msearch yapısı kullanılmalıdır. Bu yapının kullanımına ait bir örneğin görselini aşağıya bırakıyorum göz atabilirsiniz.
Last updated