[role="xpack"]
[testenv="basic"]
[[sql-translate]]
== SQL Translate API

The SQL Translate API accepts SQL in a JSON document and translates it
into native Elasticsearch queries. For example:

[source,js]
--------------------------------------------------
POST /_sql/translate
{
    "query": "SELECT * FROM library ORDER BY page_count DESC",
    "fetch_size": 10
}
--------------------------------------------------
// CONSOLE
// TEST[setup:library]

Which returns:

[source,js]
--------------------------------------------------
{
    "size" : 10,
    "docvalue_fields" : [
        {
            "field": "page_count"
        },
        {
            "field": "release_date",
            "format": "epoch_millis"
        }
    ],
    "_source": {
        "includes": [
            "author",
            "name"
        ],
        "excludes": []
    },
    "sort" : [
        {
            "page_count" : {
                "order" : "desc",
                "missing" : "_first",
                "unmapped_type" : "short"
            }
        }
    ]
}
--------------------------------------------------
// TESTRESPONSE

Which is the request that SQL will run to provide the results.
In this case, SQL will use the <<search-request-scroll,scroll>>
API. If the result contained an aggregation then SQL would use
the normal <<search-request-body,search>> API.

The request body accepts all of the <<sql-rest-fields,fields>> that
the <<sql-rest,SQL REST API>> accepts except `cursor`.
