term_vector

用語ベクトルは、分析プロセスによって生成された用語に関する情報を含んでいます。これには以下が含まれます:

  • 用語のリスト。
  • 各用語の位置(または順序)。
  • 元の文字列における用語の開始および終了文字オフセット。
  • ペイロード(利用可能な場合) — 各用語位置に関連付けられたユーザー定義のバイナリデータ。

これらの用語ベクトルは、特定の文書のために取得できるように保存できます。

  1. | | |
  2. | --- | --- |
  3. | `````no````` | 用語ベクトルは保存されません。(デフォルト) |
  4. | `````yes````` | フィールド内の用語のみが保存されます。 |
  5. | `````with_positions````` | 用語と位置が保存されます。 |
  6. | `````with_offsets````` | 用語と文字オフセットが保存されます。 |
  7. | `````with_positions_offsets````` | 用語、位置、および文字オフセットが保存されます。 |
  8. | `````with_positions_payloads````` | 用語、位置、およびペイロードが保存されます。 |
  9. | `````with_positions_offsets_payloads````` | 用語、位置、オフセット、およびペイロードが保存されます。 |
  10. 高速ベクトルハイライターは`````with_positions_offsets`````を必要とします。[用語ベクトルAPI](/read/elasticsearch-8-15/5cf2fae1b45c0ba1.md)は保存されているものを取得できます。
  11. 設定`````with_positions_offsets`````は、フィールドのインデックスのサイズを2倍にします。
  12. #### Python
  13. ``````python
  14. resp = client.indices.create(
  15. index="my-index-000001",
  16. mappings={
  17. "properties": {
  18. "text": {
  19. "type": "text",
  20. "term_vector": "with_positions_offsets"
  21. }
  22. }
  23. },
  24. )
  25. print(resp)
  26. resp1 = client.index(
  27. index="my-index-000001",
  28. id="1",
  29. document={
  30. "text": "Quick brown fox"
  31. },
  32. )
  33. print(resp1)
  34. resp2 = client.search(
  35. index="my-index-000001",
  36. query={
  37. "match": {
  38. "text": "brown fox"
  39. }
  40. },
  41. highlight={
  42. "fields": {
  43. "text": {}
  44. }
  45. },
  46. )
  47. print(resp2)
  48. `

Ruby

  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

Js

  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);

Console

  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. }
高速ベクトルハイライターはtextフィールドに対してデフォルトで使用されます。
用語ベクトルが有効になっているため。