Merhabalar,
Elasticsearch’te bool query’lerinden should’u işleyeceğiz. Bool query’leri birkaç alanda özelleşmiş sorgular oluşturmak için kullanılır. Misal olarak bir alanda Match sorgusunu diğer bir alanda ise Match Phrase sorgusunu çalıştırmak istiyoruz. Diğer bir alanda ise Term query’yi çalıştırmak istiyoruz. Aslında biz bir şey aramak istediğimizde nerelere bakıp ne şekilde arama yapmasını istiyorsak bool query’lerini kullanmalıyız. Bool query’leri “and”, “or”, “not” mantık kuralına göre çalışırlar. Should bunlardan “or” kuralını ihtiyar etmiştir. Should kısmına yazdığımız her sorgudan en az biri veya birkaçı getirilir. Biz “minimum_should_match” olayıyla bir alt sınır belirlersek en az o kadar alanın eşleme yaptığı sorgu sonuçlarını getirir.
Elasticsearch’te bool query’lerinden should’u işleyeceğiz. Bool query’leri birkaç alanda özelleşmiş sorgular oluşturmak için kullanılır. Misal olarak bir alanda Match sorgusunu diğer bir alanda ise Match Phrase sorgusunu çalıştırmak istiyoruz. Diğer bir alanda ise Term query’yi çalıştırmak istiyoruz. Aslında biz bir şey aramak istediğimizde nerelere bakıp ne şekilde arama yapmasını istiyorsak bool query’lerini kullanmalıyız. Bool query’leri “and”, “or”, “not” mantık kuralına göre çalışırlar. Should bunlardan “or” kuralını ihtiyar etmiştir. Should kısmına yazdığımız her sorgudan en az biri veya birkaçı getirilir. Biz “minimum_should_match” olayıyla bir alt sınır belirlersek en az o kadar alanın eşleme yaptığı sorgu sonuçlarını getirir.
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"match": {
"first_name":
"Yılmaz"
}
},
{
"match_phrase": {
"last_name":
"Yılmaz"
}
}
]
}
}
}
Açıklamak gerekirse adı Yılmaz veya soyadı Yılmaz veya adı ve
soyadı Yılmaz olanların listesini getirmesini söylüyoruz. “minimum_should_match”
2 olsaydı hem adı hem soyadı Yılmaz olanların listesini getirmesini istemiş
olurduk. Burada şunu söyleyeyim. Ad ve Soyad kısmında Yılmaz geçecek. Sadece
Yılmaz olanları getir demiyoruz. Sadece Yılmaz olanları getir demek için “term”
sorgusu kullanmamız gerekirdi. Aşağıda bir sorgu veriyorun. Onu da siz yorumlayın.
{
"query": {
"bool": {
"minimum_should_match": 0,
"should": [
{
"match": {
"first_name": "Ahmed
Emin"
}
},
{
"match_phrase": {
"last_name":
"Maraşlı"
}
},
{
"match": {
"city":
"Kahramanmaraş"
}
}
]
}
}
}
Hiç yorum yok:
Yorum Gönder