Boolean field type
Boolean fields accept JSON true
and false
values, but can also accept strings which are interpreted as either true or false:
- False values
false
,"false"
,""
(empty string)- True values
true
,"true"
For example:
PUT my-index-000001
{
"mappings": {
"properties": {
"is_published": {
"type": "boolean"
}
}
}
}
POST my-index-000001/_doc/1?refresh
{
"is_published": "true" 1
}
GET my-index-000001/_search
{
"query": {
"term": {
"is_published": true 2
}
}
}
- Indexing a document with
"true"
, which is interpreted astrue
. - Searching for documents with a JSON
true
.
Aggregations like the terms
aggregation use 1
and 0
for the key
, and the strings "true"
and "false"
for the key_as_string
. Boolean fields when used in scripts, return true
and false
:
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)"
}
}
}
The following parameters are accepted by boolean
fields:
doc_values
- Should the field be stored on disk in a column-stride fashion, so that it can later be used for sorting, aggregations, or scripting? Accepts
true
(default) orfalse
. index
- Should the field be quickly searchable? Accepts
true
(default) andfalse
. Fields that only havedoc_values
enabled can still be queried using term or range-based queries, albeit slower. ignore_malformed
- Trying to index the wrong data type into a field throws an exception by default, and rejects the whole document. If this parameter is set to true, it allows the exception to be ignored. The malformed field is not indexed, but other fields in the document are processed normally. Accepts
true
orfalse
. Note that this cannot be set if thescript
parameter is used. null_value
- Accepts any of the true or false values listed above. The value is substituted for any explicit
null
values. Defaults tonull
, which means the field is treated as missing. Note that this cannot be set if thescript
parameter is used. on_script_error
- Defines what to do if the script defined by the
script
parameter throws an error at indexing time. Acceptsfail
(default), which will cause the entire document to be rejected, andcontinue
, which will register the field in the document’s_ignored
metadata field and continue indexing. This parameter can only be set if thescript
field is also set. script
- If this parameter is set, then the field will index values generated by this script, rather than reading the values directly from the source. If a value is set for this field on the input document, then the document will be rejected with an error. Scripts are in the same format as their runtime equivalent.
store
- Whether the field value should be stored and retrievable separately from the
_source
field. Acceptstrue
orfalse
(default). meta
- Metadata about the field.
time_series_dimension
-
(Optional, Boolean)
Marks the field as a time series dimension. Defaults to
false
.The
index.mapping.dimension_fields.limit
index setting index setting limits the number of dimensions in an index.Dimension fields have the following constraints:
- The
doc_values
andindex
mapping parameters must betrue
.
- The
Synthetic _source
is Generally Available only for TSDB indices (indices that have index.mode
set to time_series
). For other indices synthetic _source
is in technical preview. Features in technical preview may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.
boolean
fields support synthetic _source
in their default configuration.
Synthetic source may sort boolean
field values. For example:
PUT idx
{
"settings": {
"index": {
"mapping": {
"source": {
"mode": "synthetic"
}
}
}
},
"mappings": {
"properties": {
"bool": { "type": "boolean" }
}
}
}
PUT idx/_doc/1
{
"bool": [true, false, true, false]
}
Will become:
{
"bool": [false, false, true, true]
}