Elasticsearch - Arama API'leri

Bu API, Elasticsearch'te içerik aramak için kullanılır. Bir kullanıcı, parametre olarak sorgu dizesi içeren bir alma isteği göndererek arama yapabilir veya gönderi isteğinin mesaj gövdesine bir sorgu gönderebilir. Temelde tüm arama APIS'leri çoklu indeksli, çoklu tiptir.

Çoklu Dizin

Elasticsearch, tüm endekslerde veya bazı belirli endekslerde bulunan belgeleri aramamıza olanak tanır. Örneğin, merkezi içeren bir ada sahip tüm belgeleri aramamız gerekirse, burada gösterildiği gibi yapabiliriz -

GET /_all/_search?q=city:paprola

Yukarıdaki kodu çalıştırdığımızda şu yanıtı alıyoruz -

{
   "took" : 33,
   "timed_out" : false,
   "_shards" : {
      "total" : 7,
      "successful" : 7,
      "skipped" : 0,
      "failed" : 0
   },
   "hits" : {
      "total" : {
         "value" : 1,
         "relation" : "eq"
      },
      "max_score" : 0.9808292,
      "hits" : [
         {
            "_index" : "schools",
            "_type" : "school",
            "_id" : "5",
            "_score" : 0.9808292,
            "_source" : {
               "name" : "Central School",
               "description" : "CBSE Affiliation",
               "street" : "Nagan",
               "city" : "paprola",
               "state" : "HP",
               "zip" : "176115",
               "location" : [
                  31.8955385,
                  76.8380405
               ],
               "fees" : 2200,
               "tags" : [
                  "Senior Secondary",
                  "beautiful campus"
               ],
               "rating" : "3.3"
            }
         }
      ]
   }
}

URI Araması

Tekdüzen Kaynak Tanımlayıcısı kullanılarak birçok parametre bir arama işleminde geçirilebilir -

S.No Parametre ve Açıklama
1

Q

Bu parametre, sorgu dizesini belirtmek için kullanılır.

2

lenient

Bu parametre sorgu dizesini belirtmek için kullanılır. Biçim tabanlı hatalar yalnızca bu parametre true olarak ayarlanarak yok sayılabilir. Varsayılan olarak yanlıştır.

3

fields

Bu parametre, sorgu dizesini belirtmek için kullanılır.

4

sort

Bu parametreyi kullanarak sıralı sonuç alabiliriz, bu parametre için olası değerler fieldName, fieldName: asc / fieldname: desc'dir.

5

timeout

Bu parametreyi kullanarak arama süresini kısıtlayabiliriz ve yanıt yalnızca belirtilen zamandaki isabetleri içerir. Varsayılan olarak zaman aşımı yoktur.

6

terminate_after

Yanıtı, sorgunun erken sona ereceği ulaşıldığında, her parça için belirli sayıda belgeyle sınırlayabiliriz. Varsayılan olarak, terminate_after yoktur.

7

from

Döndürülecek isabetlerin dizininden başlayarak. Varsayılan 0'dır.

8

size

Döndürülecek isabet sayısını gösterir. Varsayılan 10.

Vücut Araması İste

Ayrıca istek gövdesinde DSL sorgusu kullanarak sorgu da belirtebiliriz ve daha önceki bölümlerde verilen birçok örnek vardır. Böyle bir örnek burada verilmiştir -

POST /schools/_search
{
   "query":{
      "query_string":{
         "query":"up"
      }
   }
}

Yukarıdaki kodu çalıştırdığımızda şu yanıtı alıyoruz -

{
   "took" : 11,
   "timed_out" : false,
   "_shards" : {
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   },
   "hits" : {
      "total" : {
         "value" : 1,
         "relation" : "eq"
      },
      "max_score" : 0.47000363,
      "hits" : [
         {
            "_index" : "schools",
            "_type" : "school",
            "_id" : "4",
            "_score" : 0.47000363,
            "_source" : {
               "name" : "City Best School",
               "description" : "ICSE",
               "street" : "West End",
               "city" : "Meerut",
               "state" : "UP",
               "zip" : "250002",
               "location" : [
                  28.9926174,
                  77.692485
               ],
               "fees" : 3500,
               "tags" : [
                  "fully computerized"
               ],
               "rating" : "4.5"
            }
         }
      ]
   }
}