term_vector

term_vector

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

No term vectors are stored. (default)

yes

Just the terms in the field are stored.

with_positions

Terms and positions are stored.

with_offsets

Terms and character offsets are stored.

with_positions_offsets

Terms, positions, and character offsets are stored.

with_positions_payloads

Terms, positions, and payloads are stored.

with_positions_offsets_payloads

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.

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "text": {
  6. "type": "text",
  7. "term_vector": "with_positions_offsets"
  8. }
  9. }
  10. },
  11. )
  12. print(resp)
  13. resp1 = client.index(
  14. index="my-index-000001",
  15. id="1",
  16. document={
  17. "text": "Quick brown fox"
  18. },
  19. )
  20. print(resp1)
  21. resp2 = client.search(
  22. index="my-index-000001",
  23. query={
  24. "match": {
  25. "text": "brown fox"
  26. }
  27. },
  28. highlight={
  29. "fields": {
  30. "text": {}
  31. }
  32. },
  33. )
  34. print(resp2)
  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. text: {
  7. type: 'text',
  8. term_vector: 'with_positions_offsets'
  9. }
  10. }
  11. }
  12. }
  13. )
  14. puts response
  15. response = client.index(
  16. index: 'my-index-000001',
  17. id: 1,
  18. body: {
  19. text: 'Quick brown fox'
  20. }
  21. )
  22. puts response
  23. response = client.search(
  24. index: 'my-index-000001',
  25. body: {
  26. query: {
  27. match: {
  28. text: 'brown fox'
  29. }
  30. },
  31. highlight: {
  32. fields: {
  33. text: {}
  34. }
  35. }
  36. }
  37. )
  38. puts response
  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. mappings: {
  4. properties: {
  5. text: {
  6. type: "text",
  7. term_vector: "with_positions_offsets",
  8. },
  9. },
  10. },
  11. });
  12. console.log(response);
  13. const response1 = await client.index({
  14. index: "my-index-000001",
  15. id: 1,
  16. document: {
  17. text: "Quick brown fox",
  18. },
  19. });
  20. console.log(response1);
  21. const response2 = await client.search({
  22. index: "my-index-000001",
  23. query: {
  24. match: {
  25. text: "brown fox",
  26. },
  27. },
  28. highlight: {
  29. fields: {
  30. text: {},
  31. },
  32. },
  33. });
  34. console.log(response2);
  1. PUT my-index-000001
  2. {
  3. "mappings": {
  4. "properties": {
  5. "text": {
  6. "type": "text",
  7. "term_vector": "with_positions_offsets"
  8. }
  9. }
  10. }
  11. }
  12. PUT my-index-000001/_doc/1
  13. {
  14. "text": "Quick brown fox"
  15. }
  16. GET my-index-000001/_search
  17. {
  18. "query": {
  19. "match": {
  20. "text": "brown fox"
  21. }
  22. },
  23. "highlight": {
  24. "fields": {
  25. "text": {}
  26. }
  27. }
  28. }

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