Search API vs Query DSL

Hi,

can someone please explain the difference between Search API and Query DSL?
I have been using both but still don't understand the difference.

Thanks

Query DSL is a language for specifying queries. The Search API is a subset of operations that you can perform with an elasticsearch cluster related to search. Many Search API operations such as search and percolation requests accept queries as a part of these requests, these queries have to be specified in Query DSL.

So, you can think of Query DSL as a part of Search API. In other words, if we take a look at this request:

GET /_search
{
    "query" : {
        "term" : { "user" : "kimchy" }
    },
    "size": 100,
    "from": 300
}

then this portion can be considered to be a part of Search API:

GET /_search
{
    "query" : {
        ...
    },
    "size": 100,
    "from": 300
}

And this portion is Query DSL:

{
        "term" : { "user" : "kimchy" }
}