[[token-count]]
=== Token count field type
++++
<titleabbrev>Token count</titleabbrev>
++++

A field of type `token_count` is really an <<number,`integer`>> field which
accepts string values, analyzes them, then indexes the number of tokens in the
string.

For instance:

[source,console]
--------------------------------------------------
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "name": { <1>
        "type": "text",
        "fields": {
          "length": { <2>
            "type":     "token_count",
            "analyzer": "standard"
          }
        }
      }
    }
  }
}

PUT my-index-000001/_doc/1
{ "name": "John Smith" }

PUT my-index-000001/_doc/2
{ "name": "Rachel Alice Williams" }

GET my-index-000001/_search
{
  "query": {
    "term": {
      "name.length": 3 <3>
    }
  }
}
--------------------------------------------------

<1> The `name` field is a <<text,`text`>> field which uses the default
`standard` analyzer.
<2> The `name.length` field is a `token_count` <<multi-fields,multi-field>> which will index the number of tokens in the `name` field.
<3> This query matches only the document containing `Rachel Alice Williams`, as it contains three tokens.


[[token-count-params]]
==== Parameters for `token_count` fields

The following parameters are accepted by `token_count` fields:

[horizontal]

<<analyzer,`analyzer`>>::

    The <<analysis,analyzer>> which should be used to analyze the string
    value. Required. For best performance, use an analyzer without token
    filters.

`enable_position_increments`:: 

Indicates if position increments should be counted. 
Set to `false` if you don't want to count tokens removed by analyzer filters (like <<analysis-stop-tokenfilter,`stop`>>). 
Defaults to `true`.

<<mapping-boost,`boost`>>::

    Mapping field-level query time boosting. Accepts a floating point number, defaults
    to `1.0`.

<<doc-values,`doc_values`>>::

    Should the field be stored on disk in a column-stride fashion, so that it
    can later be used for sorting, aggregations, or scripting? Accepts `true`
    (default) or `false`.

<<mapping-index,`index`>>::

    Should the field be searchable? Accepts `true` (default) and `false`.

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

    Accepts a numeric value of the same `type` as the field which is
    substituted for any explicit `null` values.  Defaults to `null`, which
    means the field is treated as missing.

<<mapping-store,`store`>>::

    Whether the field value should be stored and retrievable separately from
    the <<mapping-source-field,`_source`>> field. Accepts `true` or `false`
    (default).
