Skip to content

[DOC] index:false default and index:true rejection on pluggable data format indices on some specific field types #12986

Description

@aggarwalmayank

What do you want to do?

  • [ X] Request a change to existing documentation
  • [X ] Add new documentation
  • Report a technical problem with the documentation
  • Other

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions