ブールフィールドタイプ
ブールフィールドはJSON true
およびfalse
の値を受け入れますが、真または偽として解釈される文字列も受け入れることができます:
偽の値 | false , "false" , "" (空文字列) |
真の値 | true , "true" |
例えば:
Python
resp = client.indices.create(
index="my-index-000001",
mappings={
"properties": {
"is_published": {
"type": "boolean"
}
}
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="1",
refresh=True,
document={
"is_published": "true"
},
)
print(resp1)
resp2 = client.search(
index="my-index-000001",
query={
"term": {
"is_published": True
}
},
)
print(resp2)
Ruby
response = client.indices.create(
index: 'my-index-000001',
body: {
mappings: {
properties: {
is_published: {
type: 'boolean'
}
}
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 1,
refresh: true,
body: {
is_published: 'true'
}
)
puts response
response = client.search(
index: 'my-index-000001',
body: {
query: {
term: {
is_published: true
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "my-index-000001",
mappings: {
properties: {
is_published: {
type: "boolean",
},
},
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: 1,
refresh: "true",
document: {
is_published: "true",
},
});
console.log(response1);
const response2 = await client.search({
index: "my-index-000001",
query: {
term: {
is_published: true,
},
},
});
console.log(response2);
ブールフィールドタイプ
ブールフィールドはJSON true
およびfalse
の値を受け入れますが、真または偽として解釈される文字列も受け入れることができます:
偽の値 | false , "false" , "" (空文字列) |
真の値 | true , "true" |
例えば:
Python
resp = client.index(
index="my-index-000001",
id="1",
refresh=True,
document={
"is_published": True
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="2",
refresh=True,
document={
"is_published": False
},
)
print(resp1)
resp2 = client.search(
index="my-index-000001",
aggs={
"publish_state": {
"terms": {
"field": "is_published"
}
}
},
sort=[
"is_published"
],
fields=[
{
"field": "weight"
}
],
runtime_mappings={
"weight": {
"type": "long",
"script": "emit(doc['is_published'].value ? 10 : 0)"
}
},
)
print(resp2)
Ruby
response = client.index(
index: 'my-index-000001',
id: 1,
refresh: true,
body: {
is_published: true
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 2,
refresh: true,
body: {
is_published: false
}
)
puts response
response = client.search(
index: 'my-index-000001',
body: {
aggregations: {
publish_state: {
terms: {
field: 'is_published'
}
}
},
sort: [
'is_published'
],
fields: [
{
field: 'weight'
}
],
runtime_mappings: {
weight: {
type: 'long',
script: "emit(doc['is_published'].value ? 10 : 0)"
}
}
}
)
puts response
Js
const response = await client.index({
index: "my-index-000001",
id: 1,
refresh: "true",
document: {
is_published: true,
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: 2,
refresh: "true",
document: {
is_published: false,
},
});
console.log(response1);
const response2 = await client.search({
index: "my-index-000001",
aggs: {
publish_state: {
terms: {
field: "is_published",
},
},
},
sort: ["is_published"],
fields: [
{
field: "weight",
},
],
runtime_mappings: {
weight: {
type: "long",
script: "emit(doc['is_published'].value ? 10 : 0)",
},
},
});
console.log(response2);
コンソール
POST my-index-000001/_doc/1?refresh
{
"is_published": true
}
POST my-index-000001/_doc/2?refresh
{
"is_published": false
}
GET my-index-000001/_search
{
"aggs": {
"publish_state": {
"terms": {
"field": "is_published"
}
}
},
"sort": [ "is_published" ],
"fields": [
{"field": "weight"}
],
"runtime_mappings": {
"weight": {
"type": "long",
"script": "emit(doc['is_published'].value ? 10 : 0)"
}
}
}
ブールフィールドのパラメータ
次のパラメータは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.mode
がtime_series
に設定されているインデックス)のみで利用可能です。他のインデックスでは合成_source
は技術プレビュー中です。技術プレビューの機能は、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために作業しますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。
合成ソースは常に`````boolean`````フィールドをソートします。例えば:
#### Python
``````python
resp = client.indices.create(
index="idx",
mappings={
"_source": {
"mode": "synthetic"
},
"properties": {
"bool": {
"type": "boolean"
}
}
},
)
print(resp)
resp1 = client.index(
index="idx",
id="1",
document={
"bool": [
True,
False,
True,
False
]
},
)
print(resp1)
`
Ruby
response = client.indices.create(
index: 'idx',
body: {
mappings: {
_source: {
mode: 'synthetic'
},
properties: {
bool: {
type: 'boolean'
}
}
}
}
)
puts response
response = client.index(
index: 'idx',
id: 1,
body: {
bool: [
true,
false,
true,
false
]
}
)
puts response
Js
const response = await client.indices.create({
index: "idx",
mappings: {
_source: {
mode: "synthetic",
},
properties: {
bool: {
type: "boolean",
},
},
},
});
console.log(response);
const response1 = await client.index({
index: "idx",
id: 1,
document: {
bool: [true, false, true, false],
},
});
console.log(response1);
コンソール
PUT idx
{
"mappings": {
"_source": { "mode": "synthetic" },
"properties": {
"bool": { "type": "boolean" }
}
}
}
PUT idx/_doc/1
{
"bool": [true, false, true, false]
}
コンソール-結果
{
"bool": [false, false, true, true]
}