[[cat-fielddata]]
== cat fielddata

`fielddata` shows how much heap memory is currently being used by fielddata
on every data node in the cluster.


////
Hidden setup snippet to build an index with fielddata so our results are real:
[source,js]
--------------------------------------------------
PUT test
{
  "mappings": {
    "test": {
      "properties": {
        "body": {
          "type": "text",
          "fielddata":true
        },
        "soul": {
          "type": "text",
          "fielddata":true
        }
      }
    }
  }
}
POST test/test?refresh
{
  "body": "some words so there is a little field data",
  "soul": "some more words"
}

# Perform a search to load the field data
POST test/_search?sort=body,soul
--------------------------------------------------
// CONSOLE
////

[source,js]
--------------------------------------------------
GET /_cat/fielddata?v
--------------------------------------------------
// CONSOLE
// TEST[continued]

Looks like:

[source,txt]
--------------------------------------------------
id                     host      ip        node    field   size
Nqk-6inXQq-OxUfOUI8jNQ 127.0.0.1 127.0.0.1 Nqk-6in body    544b
Nqk-6inXQq-OxUfOUI8jNQ 127.0.0.1 127.0.0.1 Nqk-6in soul    480b
--------------------------------------------------
// TESTRESPONSE[s/544b|480b/\\d+(\\.\\d+)?[tgmk]?b/]
// TESTRESPONSE[s/Nqk-6in[^ ]*/.+/ s/soul|body/\\w+/ _cat]

Fields can be specified either as a query parameter, or in the URL path:

[source,js]
--------------------------------------------------
GET /_cat/fielddata?v&fields=body
--------------------------------------------------
// CONSOLE
// TEST[continued]

Which looks like:

[source,txt]
--------------------------------------------------
id                     host      ip        node    field   size
Nqk-6inXQq-OxUfOUI8jNQ 127.0.0.1 127.0.0.1 Nqk-6in body    544b
--------------------------------------------------
// TESTRESPONSE[s/544b|480b/\\d+(\\.\\d+)?[tgmk]?b/]
// TESTRESPONSE[s/Nqk-6in[^ ]*/.+/ _cat]

And it accepts a comma delimited list:

[source,js]
--------------------------------------------------
GET /_cat/fielddata/body,soul?v
--------------------------------------------------
// CONSOLE
// TEST[continued]

Which produces the same output as the first snippet:

[source,txt]
--------------------------------------------------
id                     host      ip        node    field   size
Nqk-6inXQq-OxUfOUI8jNQ 127.0.0.1 127.0.0.1 Nqk-6in body    544b
Nqk-6inXQq-OxUfOUI8jNQ 127.0.0.1 127.0.0.1 Nqk-6in soul    480b
--------------------------------------------------
// TESTRESPONSE[s/544b|480b/\\d+(\\.\\d+)?[tgmk]?b/]
// TESTRESPONSE[s/Nqk-6in[^ ]*/.+/ s/soul|body/\\w+/ _cat]

The output shows the individual fielddata for the`body` and `text` fields, one row per field per node.
