Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur

29 Eylül 2015 Salı

Elasticsearch ile sorgulama

Search API

Önce ekşideki bilgi hapları alalım:
en önemli özelliği distributed ve real-time olması.
solr gibi core olarak lucene kullaniyor (yani datastore aslinda lucene dokumanlari). kabuk demek daha dogru olur kanimca, daha cok orchestrator gibi
aslında bir nosql databasedir. datayı relational olmayan bir şekilde store ettiği için bayılmadan full text search yapabiliyorsunuz
kendi query-dsl'ini de üzerine barındırması fevkalade bir durum
query dsl'i biraz karışık ve aslında birbirinin yaptığı işleri aynen yapan farklı fonksiyonlar var
Peki QUERY DSL ile sorgulama konusunda bool query'ye temel bakış atalım:
{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "FIELD": {
                            "value": "VALUE"
                        }
                    }
                },
                {
                    "query_string": {
                        "default_field": "FIELD",
                        "query": "this AND that OR thus"
                    }
                }
            ],
            "should": [
                {
                    "match": {
                        "FIELD": "TEXT"
                    }
                }
            ],
            "minimum_number_should_match": 1,
            "must_not": [
                {
                    "range": {
                        "FIELD": {
                            "from": "10",
                            "to": "20"
                        }
                    }
                }
            ],
            "boost": "4"
        }
    }
}

localhost:9200/index/type URL yapısında sorgulama yapmak için _search api ile sorgulamak istenildiğinde localhost:9200/index/type/_search şeklinde sorgu yazılabilir. Search API aynı zamanda Faceting ve Filtering sağlayacaktır.
Aşağıdaki sorgu sadece size ve query parametrelerinin atandığı facet ve filter'ın ise olmadığı temel bir sorgudur:
{ 
   "size": 3, 
   "query": { 
       "match": {
          "hobbies": "skateboard"
        }
    }
}
Bu sorgu sadece hobiler içinde skateboard terimini aradığımız bir sorgudur ve hem GET hem POST metotlarıyla sadece urlnin sonunda _search olacak şekilde çalıştırılabilir.


Temel sorgulama tipleri:
  1. Term
  2. Match
  3. Range
  4. Filters

Ref: http://exploringelasticsearch.com/searching_data.html
http://www.slideshare.net/clintongormley/elasticsearch-query-dsl-not-just-for-wizards

Mapping durumunu görüntüleme

Sadece bir indexin mappingi için

GET http://10.214.66.90:9200/_mapping/ihale

Birden fazla indexin mappingi için

GET http://10.214.66.90:9200/_mapping/ihale,Firma

Bir filed(alanın) mappingi için

GET http://10.214.66.90:9200/_mapping/ihale/field/Konusu