Fleet packages specify mappings that are used to create index component templates. When a Fleet package is updated the component template is replaced, and a new backing index is created by rolling over the data stream. Field mapping changes are implemented this way because it is generally not possible to change the field mappings of an existing index after data has been indexed. So this results in a single data stream that is composed to backing indices that have different data types for the same field.
When a query is executed on the data stream it may span multiple backing indices, therefore we should avoid having mixed data types for a field that result in incompatibilities at query-time.
Examples of ways queries can break due to conflicting types
- Term query where the value is not a valid IP, but one of the backing indices uses
type: ip, (mixed ip and keyword types) - Term query where a boolean field where the value is not a valid boolean (true, fal