Elasticsearch – Search APIs

Elasticsearch - Search APIs

These Elasticsearch Search APIs are used to search content in Elasticsearch. A user can search by sending a get request with a query string as a parameter or they can post a query in the message body of the post request. Mainly all the search APIS are multi-index, multi-type.

Elasticsearch Search APIs In Multi-Index

Elasticsearch allows us to search for the documents present in all the indices or in some specific indices. For example, if we need to search all the documents with a name that contains central, we can do as shown here −

GET /_all/_search?q=city:paprola 

On running the above code, we get the following response −

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

Many parameters can be passed in a search operation using Uniform Resource Identifier −

S.NoParameter & Description
1Q This parameter is used to specify query string.
2lenient This parameter is used to specify query string. Format-based errors can be ignored by just setting this parameter to true. It is false by default.
3fieldsThis parameters is used to specify query string.
4sortWe can get sorted result by using this parameter, the possible values for this parameter is fieldName, fieldName:asc/field name:desc
5the timeout can restrict the search time by using this parameter and the response only contains the hits in that specified time. By default, there is no timeout.
6terminate_afterWe can restrict the response to a specified number of documents for each shard, upon reaching which the query will terminate early. By default, there is no terminate_after.
7fromThe starting from the index of the hits to return. Defaults to 0.
8sizeIt denotes the number of hits to return. Defaults to 10.

Request Body Search

We can also specify a query using query DSL in the request body and there are many examples already given in previous chapters. One such example is given here −

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

On running the above code, we get the following response −

{
   "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"
            }
         }
      ]
   }
}

Next Topic – Click Here

This Post Has One Comment

Leave a Reply