布尔字段类型
编辑布尔字段类型编辑
布尔字段接受 JSON true
和 false
值,但也可以接受被解释为真或假的字符串。
假值 |
|
真值 |
|
例如
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
PUT my-index-000001 { "mappings": { "properties": { "is_published": { "type": "boolean" } } } } POST my-index-000001/_doc/1?refresh { "is_published": "true" } GET my-index-000001/_search { "query": { "term": { "is_published": true } } }
像 terms
聚合 这样的聚合使用 1
和 0
作为 key
,以及字符串 "true"
和 "false"
作为 key_as_string
。在脚本中使用时,布尔字段返回 true
和 false
。
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
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
字段的参数编辑
以下参数被 boolean
字段接受。
字段是否应该以列跨度的方式存储在磁盘上,以便以后用于排序、聚合或脚本?接受 |
|
字段是否应该快速可搜索?接受 |
|
尝试将错误的数据类型索引到字段中默认情况下会抛出异常,并拒绝整个文档。如果此参数设置为 true,则允许忽略异常。格式错误的字段不会被索引,但文档中的其他字段会正常处理。接受 |
|
接受上面列出的任何真值或假值。该值将替换任何显式的 |
|
|
定义如果由 |
|
如果设置了此参数,则该字段将索引由该脚本生成的的值,而不是直接从源读取值。如果在输入文档上为该字段设置了值,则该文档将被拒绝并出现错误。脚本的格式与其 运行时等效项 相同。 |
字段值是否应该与 |
|
有关字段的元数据。 |
合成 _source
编辑
合成 _source
仅对 TSDB 索引(具有 index.mode
设置为 time_series
的索引)普遍可用。对于其他索引,合成 _source
处于技术预览阶段。技术预览中的功能可能会在将来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览中的功能不受官方 GA 功能的支持 SLA 的约束。
boolean
字段在其默认配置中支持 合成 _source
。合成 _source
不能与 copy_to
或禁用 doc_values
一起使用。
合成源始终对 boolean
字段进行排序。例如
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
PUT idx { "mappings": { "_source": { "mode": "synthetic" }, "properties": { "bool": { "type": "boolean" } } } } PUT idx/_doc/1 { "bool": [true, false, true, false] }
将变成
{ "bool": [false, false, true, true] }