ブールフィールドタイプ

ブールフィールドはJSON trueおよびfalseの値を受け入れますが、真または偽として解釈される文字列も受け入れることができます:

偽の値 false, "false", "" (空文字列)
真の値 true, "true"

例えば:

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "is_published": {
  6. "type": "boolean"
  7. }
  8. }
  9. },
  10. )
  11. print(resp)
  12. resp1 = client.index(
  13. index="my-index-000001",
  14. id="1",
  15. refresh=True,
  16. document={
  17. "is_published": "true"
  18. },
  19. )
  20. print(resp1)
  21. resp2 = client.search(
  22. index="my-index-000001",
  23. query={
  24. "term": {
  25. "is_published": True
  26. }
  27. },
  28. )
  29. print(resp2)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. is_published: {
  7. type: 'boolean'
  8. }
  9. }
  10. }
  11. }
  12. )
  13. puts response
  14. response = client.index(
  15. index: 'my-index-000001',
  16. id: 1,
  17. refresh: true,
  18. body: {
  19. is_published: 'true'
  20. }
  21. )
  22. puts response
  23. response = client.search(
  24. index: 'my-index-000001',
  25. body: {
  26. query: {
  27. term: {
  28. is_published: true
  29. }
  30. }
  31. }
  32. )
  33. puts response

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. mappings: {
  4. properties: {
  5. is_published: {
  6. type: "boolean",
  7. },
  8. },
  9. },
  10. });
  11. console.log(response);
  12. const response1 = await client.index({
  13. index: "my-index-000001",
  14. id: 1,
  15. refresh: "true",
  16. document: {
  17. is_published: "true",
  18. },
  19. });
  20. console.log(response1);
  21. const response2 = await client.search({
  22. index: "my-index-000001",
  23. query: {
  24. term: {
  25. is_published: true,
  26. },
  27. },
  28. });
  29. console.log(response2);

ブールフィールドタイプ

ブールフィールドはJSON trueおよびfalseの値を受け入れますが、真または偽として解釈される文字列も受け入れることができます:

偽の値 false, "false", "" (空文字列)
真の値 true, "true"

例えば:

Python

  1. resp = client.index(
  2. index="my-index-000001",
  3. id="1",
  4. refresh=True,
  5. document={
  6. "is_published": True
  7. },
  8. )
  9. print(resp)
  10. resp1 = client.index(
  11. index="my-index-000001",
  12. id="2",
  13. refresh=True,
  14. document={
  15. "is_published": False
  16. },
  17. )
  18. print(resp1)
  19. resp2 = client.search(
  20. index="my-index-000001",
  21. aggs={
  22. "publish_state": {
  23. "terms": {
  24. "field": "is_published"
  25. }
  26. }
  27. },
  28. sort=[
  29. "is_published"
  30. ],
  31. fields=[
  32. {
  33. "field": "weight"
  34. }
  35. ],
  36. runtime_mappings={
  37. "weight": {
  38. "type": "long",
  39. "script": "emit(doc['is_published'].value ? 10 : 0)"
  40. }
  41. },
  42. )
  43. print(resp2)

Ruby

  1. response = client.index(
  2. index: 'my-index-000001',
  3. id: 1,
  4. refresh: true,
  5. body: {
  6. is_published: true
  7. }
  8. )
  9. puts response
  10. response = client.index(
  11. index: 'my-index-000001',
  12. id: 2,
  13. refresh: true,
  14. body: {
  15. is_published: false
  16. }
  17. )
  18. puts response
  19. response = client.search(
  20. index: 'my-index-000001',
  21. body: {
  22. aggregations: {
  23. publish_state: {
  24. terms: {
  25. field: 'is_published'
  26. }
  27. }
  28. },
  29. sort: [
  30. 'is_published'
  31. ],
  32. fields: [
  33. {
  34. field: 'weight'
  35. }
  36. ],
  37. runtime_mappings: {
  38. weight: {
  39. type: 'long',
  40. script: "emit(doc['is_published'].value ? 10 : 0)"
  41. }
  42. }
  43. }
  44. )
  45. puts response

Js

  1. const response = await client.index({
  2. index: "my-index-000001",
  3. id: 1,
  4. refresh: "true",
  5. document: {
  6. is_published: true,
  7. },
  8. });
  9. console.log(response);
  10. const response1 = await client.index({
  11. index: "my-index-000001",
  12. id: 2,
  13. refresh: "true",
  14. document: {
  15. is_published: false,
  16. },
  17. });
  18. console.log(response1);
  19. const response2 = await client.search({
  20. index: "my-index-000001",
  21. aggs: {
  22. publish_state: {
  23. terms: {
  24. field: "is_published",
  25. },
  26. },
  27. },
  28. sort: ["is_published"],
  29. fields: [
  30. {
  31. field: "weight",
  32. },
  33. ],
  34. runtime_mappings: {
  35. weight: {
  36. type: "long",
  37. script: "emit(doc['is_published'].value ? 10 : 0)",
  38. },
  39. },
  40. });
  41. console.log(response2);

コンソール

  1. POST my-index-000001/_doc/1?refresh
  2. {
  3. "is_published": true
  4. }
  5. POST my-index-000001/_doc/2?refresh
  6. {
  7. "is_published": false
  8. }
  9. GET my-index-000001/_search
  10. {
  11. "aggs": {
  12. "publish_state": {
  13. "terms": {
  14. "field": "is_published"
  15. }
  16. }
  17. },
  18. "sort": [ "is_published" ],
  19. "fields": [
  20. {"field": "weight"}
  21. ],
  22. "runtime_mappings": {
  23. "weight": {
  24. "type": "long",
  25. "script": "emit(doc['is_published'].value ? 10 : 0)"
  26. }
  27. }
  28. }

ブールフィールドのパラメータ

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

doc_values フィールドはディスクにカラムストライド方式で保存され、後でソート、集計、またはスクリプトに使用されるべきですか? true(デフォルト)またはfalseを受け入れます。
index フィールドは迅速に検索可能であるべきですか? true(デフォルト)およびfalseを受け入れます。 doc_valuesが有効なフィールドは、用語または範囲ベースのクエリを使用してもクエリ可能ですが、遅くなります。
ignore_malformed フィールドに間違ったデータ型をインデックス化しようとすると、デフォルトで例外がスローされ、ドキュメント全体が拒否されます。このパラメータがtrueに設定されている場合、例外を無視することができます。間違ったフィールドはインデックス化されませんが、ドキュメント内の他のフィールドは通常通り処理されます。 trueまたはfalseを受け入れます。scriptパラメータが使用されている場合、これは設定できないことに注意してください。
null_value 上記の真または偽の値のいずれかを受け入れます。値は明示的なnull値の代わりに置き換えられます。デフォルトはnullで、これはフィールドが欠落していると見なされることを意味します。scriptパラメータが使用されている場合、これは設定できないことに注意してください。
on_script_error scriptパラメータで定義されたスクリプトがインデックス作成時にエラーをスローした場合に何をするかを定義します。fail(デフォルト)を受け入れ、これによりドキュメント全体が拒否され、continueを受け入れ、これによりフィールドがドキュメントの_ignoredメタデータフィールドに登録され、インデックス作成が続行されます。このパラメータはscriptフィールドが設定されている場合にのみ設定できます。
script このパラメータが設定されている場合、フィールドはこのスクリプトによって生成された値をインデックス化し、ソースから値を直接読み取るのではなくなります。このフィールドに入力ドキュメントで値が設定されている場合、ドキュメントはエラーで拒否されます。スクリプトはそのruntime equivalentと同じ形式です。
store フィールド値は_sourceフィールドから別々に保存および取得可能であるべきですか? trueまたはfalse(デフォルト)を受け入れます。

| meta | フィールドに関するメタデータ。

合成 _source

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

  1. 合成ソースは常に`````boolean`````フィールドをソートします。例えば:
  2. #### Python
  3. ``````python
  4. resp = client.indices.create(
  5. index="idx",
  6. mappings={
  7. "_source": {
  8. "mode": "synthetic"
  9. },
  10. "properties": {
  11. "bool": {
  12. "type": "boolean"
  13. }
  14. }
  15. },
  16. )
  17. print(resp)
  18. resp1 = client.index(
  19. index="idx",
  20. id="1",
  21. document={
  22. "bool": [
  23. True,
  24. False,
  25. True,
  26. False
  27. ]
  28. },
  29. )
  30. print(resp1)
  31. `

Ruby

  1. response = client.indices.create(
  2. index: 'idx',
  3. body: {
  4. mappings: {
  5. _source: {
  6. mode: 'synthetic'
  7. },
  8. properties: {
  9. bool: {
  10. type: 'boolean'
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response
  17. response = client.index(
  18. index: 'idx',
  19. id: 1,
  20. body: {
  21. bool: [
  22. true,
  23. false,
  24. true,
  25. false
  26. ]
  27. }
  28. )
  29. puts response

Js

  1. const response = await client.indices.create({
  2. index: "idx",
  3. mappings: {
  4. _source: {
  5. mode: "synthetic",
  6. },
  7. properties: {
  8. bool: {
  9. type: "boolean",
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);
  15. const response1 = await client.index({
  16. index: "idx",
  17. id: 1,
  18. document: {
  19. bool: [true, false, true, false],
  20. },
  21. });
  22. console.log(response1);

コンソール

  1. PUT idx
  2. {
  3. "mappings": {
  4. "_source": { "mode": "synthetic" },
  5. "properties": {
  6. "bool": { "type": "boolean" }
  7. }
  8. }
  9. }
  10. PUT idx/_doc/1
  11. {
  12. "bool": [true, false, true, false]
  13. }

次のようになります:

コンソール-結果

  1. {
  2. "bool": [false, false, true, true]
  3. }