3. Elastic Search Consolda Sorgu Yazma

1.Alias Sorgulama

  • Aşağıdaki sorgu ile mevcut ailaseslerimizi görüntüleriz.
    get  _aliases

2.Timestamp Sorgulama

  • Aşağıdaki sorgu ile timestamplerimizi görüntüleriz.
    get currenttimestamp/_search

3.Alias Silme

  • Herhangi bir aliasei silmek için aşağıdaki sorguyu kullanabiliriz.
    delete aliasIsmi

4.Çalışmaya Devam  Eden İşlemleri Görme

Çalışmaya devam eden işlemleri görmek için aşağıdaki sorguyu kullanabiliriz.

   GET inprogressstatus/_search

5.Aliasta Bulunan Dataları Görme

  • Ailasta bulunan dataları çekebilmek için aliasIsmi ve daha sonrasında /_search komutunu kullanırız.
    GET ailasesIsmi/_search

6.Bir Documentin Propertysine Göre Sorgulama

  • Herhangi bir veriye sorgu atmak için , aşağıdaki ifade  verilen  aliasndaki veriler içerisinde bir query oluşturur. Bu query sonucunda Id propertysi  5 olan veriyi getirir. Sorguları propertylere göre çeşitlendirebilirsiniz.
    GET ailasesIsmi/_search
    {
      "query": {
       "match": {
                "Id ": "5"
              }
          }
     }
    
    

7.Aralıklı Sorgulama

  • Normal şartlarda Elastic büyük verilerle çalışitığı için , elastic console veya kibanada herhangi bir ailases’a sorgu attığımız zaman bize ilk 10 veriyi döndürür. Eğer bunun fazlasını görmek istiyorsak veya belli data aralığını , örneğin 100. ila 200.cü data aralığını görmek istiyorsak bunun sorgusu aşağıdaki gibidir.

            bu sorgunun sonucu olarak 20 adet data karşımıza gelecek.  ‘From’ sayısından başlayıp  ‘size’ kadar ileri gidecek  yani  0’dan 20 ileri git , 0 ila 20 aralığı

      GET  ailasesIsmi/_search
     { 
          "from": 0,
          "size": 20
     }

            yukarıdaki sorgu ise karşımıza 100 adet kayıt çıkaracaktır. Anlamı 100. kayıttan 100 ileri git yani 100 ile 200 arasındaki kayıtlar.

     GET   ailasesIsmi/_search
     { 
        "from": 100,
        "size": 100
     }
  • Sorgunun kod karşılığı
     
       var request = new SearchRequest(Üzerinde Çalışılan Index, null) { From = 100, Size = 100};

       var Result = _client.Search<DonusTipi>(request);


8.Sıralı Sorgulama

  • Verileri çekerken belli bir sıralamaya göre çekmek istersek aşağıdaki gibi bir sorgu kullanabiliriz. Sort ifadesi içerisinde hangi propertye göre sort edeceğimiz, daha sonra da artan sırada mı azalan sırada mı sıralayacağımızı belirtiyoruz
     GET  aliasIsmi/_search
     {
       "sort": {
              "Id": { "order": "asc" }
             }
     }

Belli Propertyleri Sorgulama

  • Uzun satırlı verilerimizden sadece belli propertyleri göstermek istersek       
     GET aliasIsmi/_search
    { 
      "_source": [ "averageRate", "reviewCount"]
    }
  • Sorgunun kod karşılığı
     var request = new SearchRequest(Üzerinde Çalışılan Index, null) { Source = new SourceFilter() { 
           Includes = Infer.Fields<ProductsElasticMapBaseDto>(p => p.averageRate, p => p.reviewCount  }  };                  

     var Result = _client.Search<DonusTipi>(request);

  9.Birden Fazla Datayla ‘ve’ Sorgusu Oluşturma              

  • Birden fazla dataya göre sorgulama yapmak isterseniz aşağıdaki sorguyu kullanabilirsiniz. Aşağıda bir query oluşturacağımız daha sonra da bu querynin bir bool querysi yani doğruluk değeri olan bir query olacağı ifade ediliyor. İçerisindeki must da elasticde AND’ e karşılık gelen yapıdır. Yani aşağıdaki sorgu yaşı 20 ve kilosu 70 olan verileri ekrana getirecektir.
    GET aliasIsmi/_search
    {
        "query": {
             "bool": {
                  "must": [
                          { "match": { "Yas": "20" } },
                         { "match": { "Kilo": "70" } }
                       ]
                  }
            }  
     }


  10.Birden Fazla Datayla ‘or’ Sorgusu Oluşturma     

  • Yukaridaki sorgunun aynısını OR mantıgıyla da yazabiliriz. Elastic sorguda or yerine geçen ifade should’tur. Aşağıdaki sorgu yaşı 20 veya kilosu 70 olan kayıtları listeleyecektir.
       GET aliasIsmi/_search
      {
         "query": {
           "bool": {
             "should": [
                { "match": { "Yas": "20" } },                      
                { "match": { "Kilo": "70" } }

            ]
           }
        }
     }

  Birden Fazla Datayla ‘Not’ Sorgusu Oluşturma     

  • Elasticte not sorgusu oluşturmak için must_not sözcüğünü kullanırız. Aşağıdaki sorguda Yas’i 20 , kilosu 70 olmayan kayıtlar dönecektir.
      GET aliasIsmi/_search
     {
         "query": {
             "bool": {
                  "must_not": [
                    { "match": { "Yas": "20" } },
                    { "match": { "Kilo": "70" } }
                ]
             }
          }
      }

  • aşağıdaki sorgu ise 40 yaşında ama kilosu 70 olmayan kayıtları döndürür.
     GET aliasIsmi/_search
     {
           "query": {
               "bool": {
                   "must": [
                       { "match": { "yas": "40" } }
                  ],
                  "must_not": [
                       { "match": { "kilo": "70" } }
                  ]
            }
         }
      }


11.Filtreleme Sorgusu Oluşturma

  • Aşağıdaki filtreleme sorgusu range ifadesini kullanarak balance değeri 2000 ile 3000 arasında olan değerleri döndürür.
      GET  aliasIsmi/_search
     {
         "query": {
            "bool": {
              "must": { "match_all": {} },
             "filter": {
                 "range": {
                      "balance": {
                         "gte": 20000,
                          "lte": 30000
                          }
                     }
                 }
              }
          }
    }

12.Update Sorgusu

   POST aliasIsmi/_id/122515/_update?pretty
   {
       "doc": { "productName": "Cagatay" }
   }
  • Sorgunun kod karşılığı 

  _client.Update(DocumentPath<ElastigeMaplenecekModel>.Id(ElasticIdsi), u => u.Index(Üzerinde Çalışılan Index).Type("Tip")
   .DocAsUpsert(false)
      .Doc(new ElastigeMaplenecekModel
      {
         Property= NewProperty,
         Property2= NewProperty2,
      }));

13.Delete Sorgusu

  • Bir belgeyi silmek de basittir. Bu örnek, önceki müşterimizi 2 kimliğiyle nasıl sileceğimizi göstermektedir:
   DELETE /customer/_doc/2?pretty

14.Bulk İşlemleri

   POST /customer/_doc/_bulk?pretty
   { "index":{"_id":"1"} }
   { "name": "John Doe"  }
   { "index":{"_id":"2"} }
   { "name": "Jane Doe"  }

15.Çekilebilecek Verinin Kapasitesini Artırma

   PUT aliasIsmi/_settings
  {
    "max_result_window" : 100000000
  }