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 varPeki 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:
- Term
- Match
- Range
- 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