[[search-request-body]] == Request Body Search The search request can be executed with a search DSL, which includes the <>, within its body. Here is an example: [source,js] -------------------------------------------------- $ curl -XGET 'http://localhost:9200/twitter/tweet/_search' -d '{ "query" : { "term" : { "user" : "kimchy" } } } ' -------------------------------------------------- And here is a sample response: [source,js] -------------------------------------------------- { "_shards":{ "total" : 5, "successful" : 5, "failed" : 0 }, "hits":{ "total" : 1, "hits" : [ { "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_source" : { "user" : "kimchy", "postDate" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" } } ] } } -------------------------------------------------- [float] === Parameters [cols="<,<",options="header",] |======================================================================= |Name |Description |`timeout` |A search timeout, bounding the search request to be executed within the specified time value and bail with the hits accumulated up to that point when expired. Defaults to no timeout. |`from` |The starting from index of the hits to return. Defaults to `0`. |`size` |The number of hits to return. Defaults to `10`. |`search_type` |The type of the search operation to perform. Can be `dfs_query_then_fetch`, `dfs_query_and_fetch`, `query_then_fetch`, `query_and_fetch`. Defaults to `query_then_fetch`. See <> for more details on the different types of search that can be performed. |coming[1.4.0] `terminate_after` |The maximum number of documents to collect for each shard, upon reaching which the query execution will terminate early. If set, the response will have a boolean field `terminated_early` to indicate whether the query execution has actually terminated_early. Defaults to no terminate_after. |======================================================================= Out of the above, the `search_type` is the one that can not be passed within the search request body, and in order to set it, it must be passed as a request REST parameter. The rest of the search request should be passed within the body itself. The body content can also be passed as a REST parameter named `source`. Both HTTP GET and HTTP POST can be used to execute search with body. Since not all clients support GET with body, POST is allowed as well. include::request/query.asciidoc[] include::request/from-size.asciidoc[] include::request/sort.asciidoc[] include::request/source-filtering.asciidoc[] include::request/fields.asciidoc[] include::request/script-fields.asciidoc[] include::request/fielddata-fields.asciidoc[] include::request/post-filter.asciidoc[] include::request/highlighting.asciidoc[] include::request/rescore.asciidoc[] include::request/search-type.asciidoc[] include::request/scroll.asciidoc[] include::request/preference.asciidoc[] include::request/explain.asciidoc[] include::request/version.asciidoc[] include::request/index-boost.asciidoc[] include::request/min-score.asciidoc[] include::request/named-queries-and-filters.asciidoc[]