| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | [[precision-step]]=== `precision_step`Most <<number,numeric>> datatypes index extra terms representing numericranges for each number to make <<query-dsl-range-query,`range` queries>>faster.  For instance, this `range` query:[source,js]--------------------------------------------------  "range": {    "number": {      "gte": 0      "lte": 321    }  }--------------------------------------------------might be executed internally as a <<query-dsl-terms-query,`terms` query>> thatlooks something like this:[source,js]--------------------------------------------------  "terms": {    "number": [      "0-255",      "256-319"      "320",      "321"    ]  }--------------------------------------------------These extra terms greatly reduce the number of terms that have to be examined,at the cost of increased disk space.The default value for `precision_step` depends on the `type` of the numeric field:[horizontal]`long`, `double`, `date`, `ip`::  `16` (3 extra terms)`integer`, `float`, `short`::     `8` (3 extra terms)`byte`::                          `2147483647` (0 extra terms)`token_count`::                   `32` (0 extra terms)The value of the `precision_step` setting indicates the number of bits thatshould be compressed into an extra term.  A `long` value consists of 64 bits,so a `precision_step` of 16 results in the following terms:[horizontal]Bits 0-15:: `value & 1111111111111111 0000000000000000 0000000000000000 0000000000000000`Bits 0-31:: `value & 1111111111111111 1111111111111111 0000000000000000 0000000000000000`Bits 0-47:: `value & 1111111111111111 1111111111111111 1111111111111111 0000000000000000`Bits 0-63:: `value`
 |