[[point]]
[role="xpack"]
[testenv="basic"]
=== Point field type
++++
<titleabbrev>Point</titleabbrev>
++++

The `point` data type facilitates the indexing of and searching
arbitrary `x, y` pairs that fall in a 2-dimensional planar
coordinate system.

You can query documents using this type using
<<query-dsl-shape-query,shape Query>>.

There are four ways that a point may be specified, as demonstrated below:

[source,console]
--------------------------------------------------
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "location": {
        "type": "point"
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "text": "Point as an object",
  "location": { <1>
    "x": 41.12,
    "y": -71.34
  }
}

PUT my-index-000001/_doc/2
{
  "text": "Point as a string",
  "location": "41.12,-71.34" <2>
}


PUT my-index-000001/_doc/4
{
  "text": "Point as an array",
  "location": [41.12, -71.34] <3>
}

PUT my-index-000001/_doc/5
{
  "text": "Point as a WKT POINT primitive",
  "location" : "POINT (41.12 -71.34)" <4>
}

--------------------------------------------------

<1> Point expressed as an object, with `x` and `y` keys.
<2> Point expressed as a string with the format: `"x,y"`.
<3> Point expressed as an array with the format: [ `x`, `y`]
<4> Point expressed as a https://docs.opengeospatial.org/is/12-063r5/12-063r5.html[Well-Known Text]
POINT with the format: `"POINT(x y)"`

The coordinates provided to the indexer are single precision floating point values so
the field guarantees the same accuracy provided by the java virtual machine (typically
`1E-38`).

[[point-params]]
==== Parameters for `point` fields

The following parameters are accepted by `point` fields:

[horizontal]

<<ignore-malformed,`ignore_malformed`>>::

    If `true`, malformed points are ignored. If `false` (default),
    malformed points throw an exception and reject the whole document.

`ignore_z_value`::

    If `true` (default) three dimension points will be accepted (stored in source)
    but only x and y values will be indexed; the third dimension is
    ignored. If `false`, points containing any more than x and y
    (two dimensions) values throw an exception and reject the whole document.

<<null-value,`null_value`>>::

    Accepts an point value which is substituted for any explicit `null` values.
    Defaults to `null`, which means the field is treated as missing.

==== Sorting and retrieving points

It is currently not possible to sort points or retrieve their fields
directly. The `point` value is only retrievable through the `_source`
field.
