- Elasticsearch - Home
- Elasticsearch - Basic Concepts
- Elasticsearch - Installation
- Elasticsearch - Populate
- Migration between Versions
- Elasticsearch - API Conventions
- Elasticsearch - Document APIs
- Elasticsearch - Search APIs
- Elasticsearch - Aggregations
- Elasticsearch - Index APIs
- Elasticsearch - CAT APIs
- Elasticsearch - Cluster APIs
- Elasticsearch - Query DSL
- Elasticsearch - Mapping
- Elasticsearch - Analysis
- Elasticsearch - Modules
- Elasticsearch - Index Modules
- Elasticsearch - Ingest Node
- Elasticsearch - Managing Index Lifecycle
- Elasticsearch - SQL Access
- Elasticsearch - Monitoring
- Elasticsearch - Rollup Data
- Elasticsearch - Frozen Indices
- Elasticsearch - Testing
- Elasticsearch - Kibana Dashboard
- Elasticsearch - Filtering by Field
- Elasticsearch - Data Tables
- Elasticsearch - Region Maps
- Elasticsearch - Pie Charts
- Elasticsearch - Area and Bar Charts
- Elasticsearch - Time Series
- Elasticsearch - Tag Clouds
- Elasticsearch - Heat Maps
- Elasticsearch - Canvas
- Elasticsearch - Logs UI
- Elasticsearch Useful Resources
- Elasticsearch - Quick Guide
- Elasticsearch - Useful Resources
- Elasticsearch - Discussion
Elasticsearch - Search APIs
This API is used to search content in Elasticsearch. A user can search by sending a get request with query string as a parameter or they can post a query in the message body of post request. Mainly all the search APIS are multi-index, multi-type.
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.No | Parameter & Description |
|---|---|
| 1 |
Q This parameter is used to specify query string. |
| 2 |
lenient 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. |
| 3 |
fields This parameter is used to specify query string. |
| 4 |
sort We can get sorted result by using this parameter, the possible values for this parameter is fieldName, fieldName:asc/fieldname:desc |
| 5 |
timeout We can restrict the search time by using this parameter and response only contains the hits in that specified time. By default, there is no timeout. |
| 6 |
terminate_after We 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. |
| 7 |
from The starting from index of the hits to return. Defaults to 0. |
| 8 |
size It denotes the number of hits to return. Defaults to 10. |
Request Body Search
We can also specify query using query DSL in 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"
}
}
]
}
}