Term vectors contain information about the terms produced by the analysis process, including:

  • a list of terms.
  • the position (or order) of each term.
  • the start and end character offsets mapping the term to its origin in the original string.
  • payloads (if they are available) — user-defined binary data associated with each term position.

These term vectors can be stored so that they can be retrieved for a particular document.

The term_vector setting accepts:


No term vectors are stored. (default)


Just the terms in the field are stored.


Terms and positions are stored.


Terms and character offsets are stored.


Terms, positions, and character offsets are stored.


Terms, positions, and payloads are stored.


Terms, positions, offsets and payloads are stored.

The fast vector highlighter requires with_positions_offsets. The term vectors API can retrieve whatever is stored.

Setting with_positions_offsets will double the size of a field’s index.

PUT my-index-000001
  "mappings": {
    "properties": {
      "text": {
        "type":        "text",
        "term_vector": "with_positions_offsets"

PUT my-index-000001/_doc/1
  "text": "Quick brown fox"

GET my-index-000001/_search
  "query": {
    "match": {
      "text": "brown fox"
  "highlight": {
    "fields": {
      "text": {} 

The fast vector highlighter will be used by default for the text field because term vectors are enabled.