What do you want to do?
Tell us about your request. Provide a summary of the request.
OpenSearch core PR opensearch-project/OpenSearch#22712 introduces new mapping behavior for
indices that use a pluggable data format: a specific set of field types now default index
to false, and an explicit index: true on those fields is rejected. This behavior is
undocumented. (The pluggable data format settings themselves already exist — see "Context" —
and are not introduced by this PR.)
What needs to be documented (the change in this PR)
1. index defaults to false for these field types on a pluggable-data-format index
Affected field types:
byte, short, integer, long, float, double, half_float, unsigned_long,
scaled_float, date, date_nanos, ip, boolean.
- These fields remain queryable (
range, term, terms) — search is served by the
pluggable format's columnar storage / doc values rather than by the Lucene index.
- The
index: false default is implicit — it is not written into the stored mapping,
consistent with OpenSearch's existing behavior of not persisting unspecified defaults.
keyword and text are NOT affected — their search is still served by the Lucene
inverted index, so they keep index: true.
Why these specific types: on a pluggable-data-format index, the format backs only columnar
storage (and bloom filters) for the affected types and does not provide their search
capability (POINT_RANGE for numeric/date/date_nanos/ip/scaled_float; FULL_TEXT_SEARCH
for boolean). Since the Lucene secondary does not write that search structure, index
defaults to false and search falls back to the columnar/doc-values path. keyword/text
retain their FULL_TEXT_SEARCH capability, so they are unchanged.
Implementation reference (exact mappers changed in the core PR — for traceability):
| Field type(s) |
Mapper class |
Module |
byte, short, integer, long, float, double, half_float, unsigned_long |
NumberFieldMapper |
server |
scaled_float |
ScaledFloatFieldMapper |
modules/mapper-extras |
date, date_nanos |
DateFieldMapper |
server |
ip |
IpFieldMapper |
server |
boolean |
BooleanFieldMapper |
server |
KeywordFieldMapper and TextFieldMapper were intentionally not changed.
2. index: true is rejected on these fields
Setting index: true explicitly on an affected field type (at index creation, via a mapping
update, or through an index template) on a pluggable-data-format index returns a 400
MapperParsingException, indicating the data format cannot provide the requested search
capability (for example, "cannot collectively cover: [POINT_RANGE]", or FULL_TEXT_SEARCH
for boolean).
Pages likely affected
- Field type pages (numeric types,
date/date_nanos, ip, boolean, scaled_float) —
add a note about the pluggable-data-format index default and the index: true rejection,
and explicitly call out that keyword/text are unaffected.
- The pluggable data format documentation section (wherever the existing settings are/should
be described) — add the mapping behavior.
Version: List the OpenSearch version to which this issue applies, e.g. 2.14, 2.12--2.14, or all.
3.9
What other resources are available? Provide links to related issues, POCs, steps for testing, etc.
What do you want to do?
Tell us about your request. Provide a summary of the request.
OpenSearch core PR opensearch-project/OpenSearch#22712 introduces new mapping behavior for
indices that use a pluggable data format: a specific set of field types now default
indexto
false, and an explicitindex: trueon those fields is rejected. This behavior isundocumented. (The pluggable data format settings themselves already exist — see "Context" —
and are not introduced by this PR.)
What needs to be documented (the change in this PR)
1.
indexdefaults tofalsefor these field types on a pluggable-data-format indexAffected field types:
byte,short,integer,long,float,double,half_float,unsigned_long,scaled_float,date,date_nanos,ip,boolean.range,term,terms) — search is served by thepluggable format's columnar storage / doc values rather than by the Lucene index.
index: falsedefault is implicit — it is not written into the stored mapping,consistent with OpenSearch's existing behavior of not persisting unspecified defaults.
keywordandtextare NOT affected — their search is still served by the Luceneinverted index, so they keep
index: true.Why these specific types: on a pluggable-data-format index, the format backs only columnar
storage (and bloom filters) for the affected types and does not provide their search
capability (
POINT_RANGEfor numeric/date/date_nanos/ip/scaled_float;FULL_TEXT_SEARCHfor
boolean). Since the Lucene secondary does not write that search structure,indexdefaults to
falseand search falls back to the columnar/doc-values path.keyword/textretain their
FULL_TEXT_SEARCHcapability, so they are unchanged.Implementation reference (exact mappers changed in the core PR — for traceability):
byte,short,integer,long,float,double,half_float,unsigned_longNumberFieldMapperserverscaled_floatScaledFloatFieldMappermodules/mapper-extrasdate,date_nanosDateFieldMapperserveripIpFieldMapperserverbooleanBooleanFieldMapperserverKeywordFieldMapperandTextFieldMapperwere intentionally not changed.2.
index: trueis rejected on these fieldsSetting
index: trueexplicitly on an affected field type (at index creation, via a mappingupdate, or through an index template) on a pluggable-data-format index returns a
400MapperParsingException, indicating the data format cannot provide the requested searchcapability (for example, "cannot collectively cover: [POINT_RANGE]", or
FULL_TEXT_SEARCHfor
boolean).Pages likely affected
date/date_nanos,ip,boolean,scaled_float) —add a note about the pluggable-data-format
indexdefault and theindex: truerejection,and explicitly call out that
keyword/textare unaffected.be described) — add the mapping behavior.
Version: List the OpenSearch version to which this issue applies, e.g. 2.14, 2.12--2.14, or all.
3.9
What other resources are available? Provide links to related issues, POCs, steps for testing, etc.