﻿---
title: ES|QL MV_FIRST function
description: 
url: https://www.elastic.co/elastic/docs-builder/docs/3608/reference/query-languages/esql/functions-operators/mv-functions/mv_first
products:
  - Elasticsearch
---

# ES|QL MV_FIRST function
Returns the first value from a multi-value field.

## Syntax

![Embedded](https://www.elastic.co/elastic/docs-builder/docs/3608/reference/query-languages/esql/images/generated/x-pack-esql/functions/mv_first.svg)


## Parameters

<definitions>
  <definition term="field">
    Expression that can be null, a single value, or multiple values.
  </definition>
</definitions>


## Description

Converts a multivalued expression into a single valued column containing the first value. This is most useful when reading from a function that emits multivalued columns in a known order like [`SPLIT`](https://www.elastic.co/elastic/docs-builder/docs/3608/reference/query-languages/esql/functions-operators/string-functions/split).
The order that [multivalued fields](https://www.elastic.co/elastic/docs-builder/docs/3608/reference/query-languages/esql/esql-multivalued-fields) are read from
underlying storage is not guaranteed. It is **frequently** ascending, but don’t
rely on that. If you need the minimum value use [`MV_MIN`](https://www.elastic.co/elastic/docs-builder/docs/3608/reference/query-languages/esql/functions-operators/mv-functions/mv_min) instead of
`MV_FIRST`. `MV_MIN` has optimizations for sorted values so there isn’t a
performance benefit to `MV_FIRST`.

## Supported types


| field                                                     | result          |
|-----------------------------------------------------------|-----------------|
| boolean                                                   | boolean         |
| cartesian_point                                           | cartesian_point |
| cartesian_shape                                           | cartesian_shape |
| date                                                      | date            |
| date_nanos                                                | date_nanos      |
| double                                                    | double          |
| flattened <applies-to>Elastic Stack: Planned</applies-to> | flattened       |
| geo_point                                                 | geo_point       |
| geo_shape                                                 | geo_shape       |
| geohash                                                   | geohash         |
| geohex                                                    | geohex          |
| geotile                                                   | geotile         |
| integer                                                   | integer         |
| ip                                                        | ip              |
| keyword                                                   | keyword         |
| long                                                      | long            |
| text                                                      | keyword         |
| unsigned_long                                             | unsigned_long   |
| version                                                   | version         |


## Example

```esql
ROW a="foo;bar;baz"
| EVAL first_a = MV_FIRST(SPLIT(a, ";"))
```


| a:keyword   | first_a:keyword |
|-------------|-----------------|
| foo;bar;baz | "foo"           |