Skip to content

Include index.sort.* index settings defaults for time_series and logsdb index modes. #129062

Description

@martijnvg

Today when index mode is either logsdb and tsdb, then index sorting is used. However when requesting the index.sort.* setting, then no of the index sort index settings have a value. Even when asking for default index setting values. However index sorting has been configured.

This makes it difficult to figure out how either of the index mode work and confusing whether index sorting is actually active. Especially if index sorting gets customized while using logs index mode.

The fix would be to include the default logsdb and time series index modes' default index sort settings in the get index settings api as default values.

POST /logs-myapp-prod/_doc
{
    "@timestamp": "1999-12-31T23:59:59.999Z"
}

GET /logs-myapp-prod/_settings?include_defaults

The last api call doesn't include any values for index.sort.* index settings:

get index api response

{
    ".ds-logs-myapp-prod-2025.06.06-000001": {
        "settings": {
            "index": {
                "mapping": {
                    "total_fields": {
                        "ignore_dynamic_beyond_limit": "true"
                    },
                    "ignore_malformed": "true"
                },
                "hidden": "true",
                "provided_name": ".ds-logs-myapp-prod-2025.06.06-000001",
                "creation_date": "1749220646540",
                "number_of_replicas": "1",
                "uuid": "uSWly65PQky-lnmD7rtT7A",
                "version": {
                    "created": "9028000"
                },
                "lifecycle": {
                    "name": "logs"
                },
                "mode": "logsdb",
                "codec": "best_compression",
                "routing": {
                    "allocation": {
                        "include": {
                            "_tier_preference": "data_hot"
                        }
                    }
                },
                "number_of_shards": "1",
                "logsdb": {
                    "add_host_name_field": "true",
                    "sort_on_host_name": "true"
                },
                "default_pipeline": "logs@default-pipeline"
            }
        },
        "defaults": {
            "index": {
                "flush_after_merge": "512mb",
                "time_series": {
                    "end_time": "9999-12-31T23:59:59.999Z",
                    "start_time": "-9999-01-01T00:00:00Z",
                    "es87tsdb_codec": {
                        "enabled": "true"
                    }
                },
                "final_pipeline": "_none",
                "max_inner_result_window": "100",
                "unassigned": {
                    "node_left": {
                        "delayed_timeout": "1m"
                    }
                },
                "max_terms_count": "65536",
                "rollup": {
                    "source": {
                        "name": "",
                        "uuid": ""
                    }
                },
                "lifecycle": {
                    "prefer_ilm": "true",
                    "rollover_alias": "",
                    "origination_date": "-1",
                    "parse_origination_date": "false",
                    "skip": "false",
                    "step": {
                        "wait_time_threshold": "12h"
                    },
                    "indexing_complete": "false"
                },
                "routing_partition_size": "1",
                "force_memory_term_dictionary": "false",
                "max_docvalue_fields_search": "100",
                "merge": {
                    "scheduler": {
                        "max_thread_count": "4",
                        "auto_throttle": "true",
                        "max_merge_count": "9"
                    },
                    "policy": {
                        "merge_factor": "32",
                        "floor_segment": "2mb",
                        "max_merge_at_once_explicit": "30",
                        "max_merge_at_once": "10",
                        "max_merged_segment": "0b",
                        "expunge_deletes_allowed": "10.0",
                        "segments_per_tier": "10.0",
                        "type": "UNSET",
                        "deletes_pct_allowed": "20.0"
                    }
                },
                "max_refresh_listeners": "1000",
                "max_regex_length": "1000",
                "load_fixed_bitset_filters_eagerly": "true",
                "number_of_routing_shards": "1",
                "write": {
                    "wait_for_active_shards": "1"
                },
                "seq_no": {
                    "index_options": "DOC_VALUES_ONLY"
                },
                "verified_before_close": "false",
                "mapping": {
                    "coerce": "false",
                    "semantic_text": {
                        "use_legacy_format": "false"
                    },
                    "field_name_length": {
                        "limit": "9223372036854775807"
                    },
                    "total_fields": {
                        "limit": "1000"
                    },
                    "ignore_above": "8191",
                    "nested_objects": {
                        "limit": "10000"
                    },
                    "source": {
                        "mode": "SYNTHETIC"
                    },
                    "synthetic_source": {
                        "skip_ignored_source_read": "false",
                        "skip_ignored_source_write": "false"
                    },
                    "nested_fields": {
                        "limit": "50"
                    },
                    "synthetic_source_keep": "arrays",
                    "depth": {
                        "limit": "20"
                    },
                    "dimension_fields": {
                        "limit": "32768"
                    },
                    "use_doc_values_skipper": "false"
                },
                "source_only": "false",
                "soft_deletes": {
                    "enabled": "true",
                    "retention": {
                        "operations": "0"
                    },
                    "retention_lease": {
                        "period": "12h"
                    }
                },
                "max_script_fields": "32",
                "query": {
                    "default_field": [
                        "*"
                    ],
                    "parse": {
                        "allow_unmapped_fields": "true"
                    }
                },
                "format": "0",
                "sort": {
                    "missing": [],
                    "mode": [],
                    "field": [],
                    "order": []
                },
                "priority": "1",
                "routing_path": [],
                "version": {
                    "compatibility": "9028000"
                },
                "dense_vector": {
                    "hnsw_filter_heuristic": "ACORN"
                },
                "max_rescore_window": "10000",
                "bloom_filter_for_id_field": {
                    "enabled": "true"
                },
                "max_adjacency_matrix_filters": "100",
                "analyze": {
                    "max_token_count": "10000"
                },
                "gc_deletes": "60s",
                "top_metrics_max_size": "10",
                "failure_store": {
                    "version": "0"
                },
                "optimize_auto_generated_id": "true",
                "max_ngram_diff": "1",
                "translog": {
                    "flush_threshold_age": "1m",
                    "generation_threshold_size": "64mb",
                    "flush_threshold_size": "10gb",
                    "sync_interval": "5s",
                    "retention": {
                        "size": "-1",
                        "age": "-1"
                    },
                    "durability": "REQUEST"
                },
                "auto_expand_replicas": "false",
                "fast_refresh": "false",
                "mapper": {
                    "dynamic": "true"
                },
                "recovery": {
                    "type": "",
                    "use_synthetic_source": "true"
                },
                "requests": {
                    "cache": {
                        "enable": "true"
                    }
                },
                "data_path": "",
                "highlight": {
                    "max_analyzed_offset": "1000000",
                    "weight_matches_mode": {
                        "enabled": "true"
                    }
                },
                "look_back_time": "2h",
                "routing": {
                    "rebalance": {
                        "enable": "all"
                    },
                    "allocation": {
                        "disk": {
                            "watermark": {
                                "ignore": "false"
                            }
                        },
                        "enable": "all",
                        "total_shards_per_node": "-1"
                    }
                },
                "search": {
                    "slowlog": {
                        "include": {
                            "user": "false"
                        },
                        "level": "TRACE",
                        "threshold": {
                            "fetch": {
                                "warn": "-1",
                                "trace": "-1",
                                "debug": "-1",
                                "info": "-1"
                            },
                            "query": {
                                "warn": "-1",
                                "trace": "-1",
                                "debug": "-1",
                                "info": "-1"
                            }
                        }
                    },
                    "idle": {
                        "after": "30s"
                    }
                },
                "fielddata": {
                    "cache": "node"
                },
                "look_ahead_time": "30m",
                "max_slices_per_scroll": "1024",
                "shard": {
                    "check_on_startup": "false"
                },
                "xpack": {
                    "watcher": {
                        "template": {
                            "version": ""
                        }
                    },
                    "version": "",
                    "ccr": {
                        "following_index": "false"
                    }
                },
                "percolator": {
                    "map_unmapped_fields_as_text": "false"
                },
                "verified_read_only": "false",
                "allocation": {
                    "max_retries": "5",
                    "existing_shards_allocator": "gateway_allocator"
                },
                "refresh_interval": "1s",
                "indexing": {
                    "slowlog": {
                        "include": {
                            "user": "false"
                        },
                        "reformat": "true",
                        "threshold": {
                            "index": {
                                "warn": "-1",
                                "trace": "-1",
                                "debug": "-1",
                                "info": "-1"
                            }
                        },
                        "source": "1000",
                        "level": "TRACE"
                    }
                },
                "compound_format": "1gb",
                "blocks": {
                    "metadata": "false",
                    "read": "false",
                    "read_only_allow_delete": "false",
                    "read_only": "false",
                    "write": "false"
                },
                "esql": {
                    "stored_fields_sequential_proportion": "0.2"
                },
                "max_result_window": "10000",
                "store": {
                    "stats_refresh_interval": "10s",
                    "type": "",
                    "fs": {
                        "fs_lock": "native"
                    },
                    "preload": [],
                    "snapshot": {
                        "snapshot_name": "",
                        "index_uuid": "",
                        "cache": {
                            "prewarm": {
                                "enabled": "true"
                            },
                            "enabled": "true",
                            "excluded_file_types": []
                        },
                        "repository_uuid": "",
                        "uncached_chunk_size": "-1b",
                        "delete_searchable_snapshot": "false",
                        "index_name": "",
                        "partial": "false",
                        "blob_cache": {
                            "metadata_files": {
                                "max_length": "64kb"
                            }
                        },
                        "repository_name": "",
                        "snapshot_uuid": ""
                    }
                },
                "queries": {
                    "cache": {
                        "enabled": "true"
                    }
                },
                "shard_limit": {
                    "group": "normal"
                },
                "warmer": {
                    "enabled": "true"
                },
                "downsample": {
                    "interval": "",
                    "source": {
                        "name": "",
                        "uuid": ""
                    },
                    "origin": {
                        "name": "",
                        "uuid": ""
                    },
                    "status": "unknown"
                },
                "logsdb": {
                    "route_on_sort_fields": "false"
                },
                "override_write_load_forecast": "0.0",
                "max_shingle_diff": "3",
                "query_string": {
                    "lenient": "false"
                }
            }
        }
    }
}

The default section contains empty values for the index.sort.* index setting:

...
"sort": {
    "missing": [],
    "mode": [],
    "field": [],
    "order": []
},
...

The fix should include the default values for both logsdb and tsdb.

Activity

  1. elasticsearchmachine commented on Jun 6, 2025

    @elasticsearchmachine
    Collaborator

    Pinging @elastic/es-storage-engine (Team:StorageEngine)

  2. kkrik-es commented on Jun 6, 2025

    @kkrik-es
    Member

    This can only be done through index settings providers, I believe. We have one for logsdb, may need one for tsdb just for this.

  3. martijnvg commented on Jun 6, 2025

    @martijnvg
    MemberAuthor

    This can only be done through index settings providers, I believe. We have one for logsdb, may need one for tsdb just for this.

    Today this is done in IndexSortConfig. We hard code the sortSpecs in case of logsdb and tsdb. There is no user facing api that easily shows how index sorting is setup. I think that maybe the disk usage of segments api will show hints that index sorting is active, but that is super low level.

    We need to do this in a different place. We can do this using index settings providers. But maybe we can do this via index setting's default mechanism.

  4. parkertimmins commented on Sep 18, 2025

    @parkertimmins
    Contributor

    @jordan-powers Here's is the investigation I did into doing this default lambdas: https://github.com/elastic/elasticsearch/pull/134972/files

  5. added a commit that references this issue on Oct 8, 2025
    9fe91ff
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions