トークンカウントフィールドタイプ

タイプ token_count のフィールドは、実際には integer フィールドであり、文字列値を受け入れ、それを分析し、次に文字列内のトークンの数をインデックスします。

例えば:

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "name": {
  6. "type": "text",
  7. "fields": {
  8. "length": {
  9. "type": "token_count",
  10. "analyzer": "standard"
  11. }
  12. }
  13. }
  14. }
  15. },
  16. )
  17. print(resp)
  18. resp1 = client.index(
  19. index="my-index-000001",
  20. id="1",
  21. document={
  22. "name": "John Smith"
  23. },
  24. )
  25. print(resp1)
  26. resp2 = client.index(
  27. index="my-index-000001",
  28. id="2",
  29. document={
  30. "name": "Rachel Alice Williams"
  31. },
  32. )
  33. print(resp2)
  34. resp3 = client.search(
  35. index="my-index-000001",
  36. query={
  37. "term": {
  38. "name.length": 3
  39. }
  40. },
  41. )
  42. print(resp3)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. name: {
  7. type: 'text',
  8. fields: {
  9. length: {
  10. type: 'token_count',
  11. analyzer: 'standard'
  12. }
  13. }
  14. }
  15. }
  16. }
  17. }
  18. )
  19. puts response
  20. response = client.index(
  21. index: 'my-index-000001',
  22. id: 1,
  23. body: {
  24. name: 'John Smith'
  25. }
  26. )
  27. puts response
  28. response = client.index(
  29. index: 'my-index-000001',
  30. id: 2,
  31. body: {
  32. name: 'Rachel Alice Williams'
  33. }
  34. )
  35. puts response
  36. response = client.search(
  37. index: 'my-index-000001',
  38. body: {
  39. query: {
  40. term: {
  41. 'name.length' => 3
  42. }
  43. }
  44. }
  45. )
  46. puts response

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. mappings: {
  4. properties: {
  5. name: {
  6. type: "text",
  7. fields: {
  8. length: {
  9. type: "token_count",
  10. analyzer: "standard",
  11. },
  12. },
  13. },
  14. },
  15. },
  16. });
  17. console.log(response);
  18. const response1 = await client.index({
  19. index: "my-index-000001",
  20. id: 1,
  21. document: {
  22. name: "John Smith",
  23. },
  24. });
  25. console.log(response1);
  26. const response2 = await client.index({
  27. index: "my-index-000001",
  28. id: 2,
  29. document: {
  30. name: "Rachel Alice Williams",
  31. },
  32. });
  33. console.log(response2);
  34. const response3 = await client.search({
  35. index: "my-index-000001",
  36. query: {
  37. term: {
  38. "name.length": 3,
  39. },
  40. },
  41. });
  42. console.log(response3);

コンソール

  1. PUT my-index-000001
  2. {
  3. "mappings": {
  4. "properties": {
  5. "name": {
  6. "type": "text",
  7. "fields": {
  8. "length": {
  9. "type": "token_count",
  10. "analyzer": "standard"
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }
  17. PUT my-index-000001/_doc/1
  18. { "name": "John Smith" }
  19. PUT my-index-000001/_doc/2
  20. { "name": "Rachel Alice Williams" }
  21. GET my-index-000001/_search
  22. {
  23. "query": {
  24. "term": {
  25. "name.length": 3
  26. }
  27. }
  28. }
name フィールドは text フィールドであり、デフォルトの standard アナライザーを使用します。
name.length フィールドは token_count マルチフィールド であり、name フィールド内のトークンの数をインデックスします。
このクエリは、Rachel Alice Williams を含むドキュメントのみを一致させます。これは3つのトークンを含んでいます。

トークンカウントフィールドのパラメータ

次のパラメータは token_count フィールドで受け入れられます:

analyzer 文字列の分析に使用される アナライザー。必須。最良のパフォーマンスを得るためには、トークンフィルターのないアナライザーを使用してください。
enable_position_increments 位置のインクリメントをカウントする必要があるかどうかを示します。アナライザーフィルターによって削除されたトークンをカウントしたくない場合は、false に設定します(stopのように)。デフォルトは true です。
doc_values フィールドはディスクに列ストライド方式で保存され、後でソート、集計、またはスクリプトに使用されるべきですか? true(デフォルト)または false を受け入れます。
index フィールドは検索可能であるべきですか? true(デフォルト)および false を受け入れます。
null_value フィールドと同じ type の数値値を受け入れ、明示的な null 値の代わりに置き換えられます。デフォルトは null で、これはフィールドが欠落していると見なされることを意味します。
store フィールド値は _source フィールドから別々に保存および取得可能であるべきですか? true または false(デフォルト)を受け入れます。

合成 _source

合成 _source は、一般的に TSDB インデックス(index.modetime_series に設定されているインデックス)のみで利用可能です。他のインデックスでは、合成 _source は技術プレビュー中です。技術プレビューの機能は、将来のリリースで変更または削除される可能性があります。Elastic は問題を修正するために取り組みますが、技術プレビューの機能は公式 GA 機能のサポート SLA の対象ではありません。

token_count フィールドは、デフォルト構成で 合成 _source をサポートします。合成 _sourcecopy_to と一緒に使用することはできません。