1 Ağustos 2018 Çarşamba

Elasticsearch Bool Query - Should


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.
{
  "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

Elasticsearch'te alias Olayı

Merhabalar, Bu yazımda sizlere elasticsearch'teki alias olayını aktaracağım. Diyelim ki biz yeni bir index oluşturduk. Bu index'imi...