---
type: api
title: Get an ES|QL view
description: **All methods and paths for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4641/api/doc/elasticsearch/operation/operation-esql-get-view
resource: https://www.elastic.co/elastic/docs-builder/docs/4641/api/doc/elasticsearch/operation/operation-esql-get-view
products:
  - Elasticsearch
---

# Get an ES|QL view

Authentication: required

Availability: Generally available since 9.4

## Paths

- `GET` `/_query/view/{name}`
- `GET` `/_query/view`

#### Path parameters

- `name` (union string | string[]) — optional, leave it out to use `/_query/view`
  The comma-separated view names to retrieve.

## Description

Returns one or more stored views. A reserved view includes `reserved` set to `true`.

[Define reusable queries with ES|QL views](https://www.elastic.co/docs/reference/query-languages/esql/esql-views)

## Required authorization

- Index privileges: `read_view_metadata`

## Response

`application/json`

- `views` (object[])
  - `name` (string)
    The name of the ES|QL view
  - `query` (string)
    The ES|QL query
  - `description` (string)
    A free-text description of the view.
  - `reserved` (boolean)
    Whether this view is reserved.

Elasticsearch creates reserved views. They can be queried and read like any other view.
They cannot be created, updated, or deleted through the views API.
The response includes this field only when the value is `true`.
## Code examples

#### Console

```console
GET /_query/view/country_addresses
```

#### JavaScript

```javascript
const response = await client.esql.getView({
  name: "country_addresses",
});
```

#### Python

```python
resp = client.esql.get_view(
    name="country_addresses",
)
```

#### curl

```curl
curl -X GET "$ELASTICSEARCH_URL/_query/view/country_addresses" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY"
```

#### C#

```c#
var response = await client.Esql
    .GetViewAsync(d1 => d1
        .Name("country_addresses")
    );
```

#### PHP

```php
$resp = $client->esql()->getView([
    "name" => "country_addresses",
]);
```

#### Ruby

```ruby
response = client.esql.get_view(
  name: "country_addresses"
)
```

## Response examples

#### View definition

`application/json`

The response contains the requested view.

```json
{
  "views": [
    {
      "name": "country_addresses",
      "query": """
        FROM addresses
        | RENAME city.country.name AS country
        | EVAL country = CASE(country == "United States of America", "United States", country)
        | STATS count=COUNT() BY country
      """,
      "description": "Address counts by country"
    }
  ]
}
```

#### Reserved view

`application/json`

A reserved view includes reserved set to true. This view is created when anomaly detection results exist.

```json
{
  "views": [
    {
      "name": ".ml-anomalies",
      "query": """
        FROM .ml-anomalies-* METADATA _index
        | WHERE result_type IN ("bucket", "record", "influencer")
        | EVAL score = COALESCE(anomaly_score, record_score, influencer_score),
               initial_score = COALESCE(initial_anomaly_score, initial_record_score, initial_influencer_score)
        | KEEP timestamp,
               event.ingested,
               job_id,
               result_type,
               is_interim,
               score,
               initial_score,
               bucket_span,
               function,
               function_description,
               field_name,
               by_field_name,
               by_field_value,
               over_field_name,
               over_field_value,
               partition_field_name,
               partition_field_value,
               influencer_field_name,
               influencer_field_value,
               detector_index,
               actual,
               typical,
               event_count,
               processing_time_ms,
               _index
      """,
      "description": "View that contains the results of machine learning anomaly detection jobs.",
      "reserved": true
    }
  ]
}
```

