Skip to content

Conversation

marciw
Copy link
Contributor

@marciw marciw commented Oct 13, 2025

(Replaces #3222, which was an ominshambles)

This PR restructures and edits time series data stream docs as part of #1502.

❗ Notes for reviewers:

  • Changes were approved by Product and Engineering in Edit time series docs for clarity #3222 🙈
  • The content is "MVP" quality overall. More improvements coming soon via the follow-up issue, including reconciling the time series section with recent similar changes to the general data stream docs
  • The various applies_to thingies could probably be better; I am committed to maintaining the thinnest of grasps on applies_to metadata

Summary of changes:

@marciw marciw marked this pull request as ready for review October 13, 2025 21:51
@marciw marciw requested review from a team as code owners October 13, 2025 21:51
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note for reviewers: The OTLP page was added in #3360 (written by @felixbarny)

Slated for more improvements in #3179

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note for reviewers: This is a new page, but the content isn't new. It used to be part of the main/overview page. We decided to split off the content because it's sort of advanced/extra.

Includes a round of techwriterly edits

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Techwriterly" 😄

@florent-leborgne
Copy link
Contributor

I really like seeing advanced topics explicitly gathered together 👏

3. Run the reindex operation to completion.
4. Revert the overridden index settings in the destination index template.
5. Invoke the `rollover` api to create a new backing index that can receive new documents.
These high-level steps summarize the process of reindexing a time series data stream. Each step is detailed in later sections.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
These high-level steps summarize the process of reindexing a time series data stream. Each step is detailed in later sections.
These high-level steps summarize the process of reindexing a time series data stream. Each step is detailed in a later section.

I assume each step is detailed in a single later section, but please ignore if I've got that wrong.

If you're using {{stack}}, {{ilm-init}} can help you manage a time series data stream's backing indices. {{ilm-init}} requires an index lifecycle policy.

While optional, we recommend using {{ilm-init}} to automate the management of your TSDS’s backing indices. {{ilm-init}} requires an index lifecycle policy.
For best results, specify a `max_age` for the `rollover` action in the policy. This nesures the [`timestamp` ranges](/manage-data/data-store/data-streams/time-bound-tsds.md) for the backing indices are consistent. For example, setting a `max_age` of `1d` for the `rollover` action ensures your backing indices consistently contain one day's worth of data.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For best results, specify a `max_age` for the `rollover` action in the policy. This nesures the [`timestamp` ranges](/manage-data/data-store/data-streams/time-bound-tsds.md) for the backing indices are consistent. For example, setting a `max_age` of `1d` for the `rollover` action ensures your backing indices consistently contain one day's worth of data.
For best results, specify a `max_age` for the `rollover` action in the policy. This ensures the [`timestamp` ranges](/manage-data/data-store/data-streams/time-bound-tsds.md) for the backing indices are consistent. For example, setting a `max_age` of `1d` for the `rollover` action ensures your backing indices consistently contain one day's worth of data.

- Set `"lifecycle": { "enabled": true }`.
- If you created an ILM policy in [step 1](#tsds-ilm-policy), reference it with `index.lifecycle.name`.
- **Other settings** (optional): Additional index settings, such as [`index.number_of_replicas`](elasticsearch://reference/elasticsearch/index-settings/index-modules.md#dynamic-index-number-of-replicas), for the data stream's backing indices.
- **Priority:** Set the priority higher than `200`, to avoid [collisions](/manage-data/data-store/templates.md#avoid-index-pattern-collisions) with built-in templates.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Priority:** Set the priority higher than `200`, to avoid [collisions](/manage-data/data-store/templates.md#avoid-index-pattern-collisions) with built-in templates.
- **Priority:** Set the priority higher than `200` to avoid [collisions](/manage-data/data-store/templates.md#avoid-index-pattern-collisions) with built-in templates.

In a TSDS, each {{es}} document represents an observation, or data point, in a specific time series. Although a TSDS can contain multiple time series, a document can only belong to one time series. A time series can’t span multiple data streams.
### Time series fields

Compared to a regular data stream, a TSDS uses some additional fields specific to time series: dimension fields and metric fields, plus an internal `_tsid` metadata field.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Compared to a regular data stream, a TSDS uses some additional fields specific to time series: dimension fields and metric fields, plus an internal `_tsid` metadata field.
Compared to a regular data stream, a TSDS uses some additional fields specific to time series: dimension fields and metric fields, plus an internal `_tsid` metadata field.

Copy link
Contributor

@kilfoyle kilfoyle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 🦕
This looks great @marciw! The new layout is a big improvement.

Comment on lines +3 to +6
applies_to:
stack: preview 9.2
deployment:
self:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this accurate? the endpoint only works for self-managed deployments? I see references to elastic cloud below but I'm not sure what the relationship is between the note and the page

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@theletterf did you happen to check this when reviewing the original PR? #3360

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we specifically want to document that the ES OLTP endpoint is for self-managed only. For Cloud, we link to the Cloud OTLP Endpoint in the important section.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@marciw might be worth explaining a little in the important note the takeaway for self-managed folks

Copy link
Contributor

@leemthompo leemthompo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💅 I had to dig very deep for the nittiest of nits :)

stack: ga
serverless: ga
navigation_title: "Query downsampled data"
navigation_title: "Querying"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't suggest a change on the H1 itself, but maybe SEO-wise it should be # Querying downsampled data in {{es}}

But probably not even necessary as we have Elasticsearch product metadata 🤷

# Reindex a time series data stream [tsds-reindex]

## Introduction [tsds-reindex-intro]
Reindexing allows you to copy documents from an old [time series data stream (TSDS)](/manage-data/data-store/data-streams/time-series-data-stream-tsds.md) to a new one. All data streams support reindexing, but time series data streams require special handling due to their time-bound backing indices and strict timestamp acceptance windows.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Reindexing allows you to copy documents from an old [time series data stream (TSDS)](/manage-data/data-store/data-streams/time-series-data-stream-tsds.md) to a new one. All data streams support reindexing, but time series data streams require special handling due to their time-bound backing indices and strict timestamp acceptance windows.
Reindexing allows you to copy documents from an existing [time series data stream (TSDS)](/manage-data/data-store/data-streams/time-series-data-stream-tsds.md) to a new one. All data streams support reindexing, but time series data streams require special handling due to their time-bound backing indices and strict timestamp acceptance windows.

nit: ageist

The destination data stream is now ready to accept new documents.

Note that the initial backing index can still accept documents within the range of timestamps derived from the source data stream. If this is not desired, mark it as [read-only](elasticsearch://reference/elasticsearch/index-settings/index-block.md#index-blocks-read-only) explicitly.
## Related resources
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants