---
type: api
title: Translate SQL into Elasticsearch queries
description: **All methods and paths for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-sql-translate
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-sql-translate
products:
  - Elasticsearch
---

# Translate SQL into Elasticsearch queries


Availability: 6.3+

## Paths

- `POST` (also `GET`) `/_sql/translate`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#basicauth)
- [Bearer auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#bearerauth)

## Description

Translate an SQL search into a search API request containing Query DSL.
It accepts the same request body parameters as the SQL search API, excluding `cursor`.

## Required authorization

* Index privileges: `read`

## Request Body

`application/json`

- `fetch_size` (number · default: 1000) — optional
  The maximum number of rows (or entries) to return in one response.
- `filter` ({} QueryContainer · default: none) — optional
  The Elasticsearch query DSL for additional filtering.
  See [QueryContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
- `query` (string) — required
  The SQL query to run.
- `time_zone` (string · default: Z) — optional
  The ISO-8601 time zone ID for the search.

## Response

`application/json`

- `aggregations` (map string to {} AggregationContainer)
  See [AggregationContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-aggregations-aggregationcontainer)
- `size` (number)
- `_source` (SourceConfig)
- `fields` ([] FieldAndFormat)
  - `field` (string Field)
    A wildcard pattern. The request returns values for field names matching this pattern.
  - `format` (string)
    The format in which the values are returned.
  - `include_unmapped` (boolean)
- `query` ({} QueryContainer)
  See [QueryContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
- `sort` (Sort)
- `track_total_hits` (boolean | number)
## Code Examples

#### Console

```console
POST _sql/translate
{
  "query": "SELECT * FROM library ORDER BY page_count DESC",
  "fetch_size": 10
}
```

#### JavaScript

```javascript
const response = await client.sql.translate({
  query: "SELECT * FROM library ORDER BY page_count DESC",
  fetch_size: 10,
});
```

#### Python

```python
resp = client.sql.translate(
    query="SELECT * FROM library ORDER BY page_count DESC",
    fetch_size=10,
)
```

#### curl

```curl
curl -X POST "$ELASTICSEARCH_URL/_sql/translate" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "SELECT * FROM library ORDER BY page_count DESC",
    "fetch_size": 10
  }'
```

#### Java

```java
client.sql().translate(t -> t
    .fetchSize(10)
    .query("SELECT * FROM library ORDER BY page_count DESC")
);
```

#### C#

```c#
var response = await client.Sql
    .TranslateAsync(d1 => d1
        .FetchSize(10)
        .Query("SELECT * FROM library ORDER BY page_count DESC")
    );
```

#### PHP

```php
$resp = $client->sql()->translate([
    "body" => [
        "query" => "SELECT * FROM library ORDER BY page_count DESC",
        "fetch_size" => 10,
    ],
]);
```

#### Ruby

```ruby
response = client.sql.translate(
  body: {
    "query": "SELECT * FROM library ORDER BY page_count DESC",
    "fetch_size": 10
  }
)
```

