Skip to content

Add guidance on splitting an event into multiple documents - #8110

Open
bmorelli25 wants to merge 8 commits into
mainfrom
claude/logstash-docs-guidance-bc811c
Open

Add guidance on splitting an event into multiple documents#8110
bmorelli25 wants to merge 8 commits into
mainfrom
claude/logstash-docs-guidance-bc811c

Conversation

@bmorelli25

@bmorelli25 bmorelli25 commented Aug 27, 2026

Copy link
Copy Markdown
Member

Summary

Users frequently assume that Elastic Integrations or Elasticsearch ingest pipelines can split one incoming event into multiple documents. They (for the most part) can't (see elastic/elasticsearch#56769). These docs attempt to reduce confusion around this topic.

Closes #6491.

Changes

Adds a new page: "Split an event into multiple documents" (manage-data/ingest/transform-enrich/), structured to avoid Logstash unless actually required:

  • States capabilities: Agent processors and ingest pipelines transform events one-to-one (more nuanced, but explained)
  • Elasticsearch split processor splits a field value into an array, but doesn't create documents
  • Disambiguates splitting from rerouting and routes rerouting use cases to the reroute processor and @custom pipelines
  • Covers splitting at collection time first
  • Then documents the Logstash path for inputs with no native split option
  • Warns about 1→N document explosion

Adds a few signposts linking to the new page

Attribution

🤖 Generated with Claude Code

Adds a how-to page under Transform and enrich data clarifying that
Elastic Agent processors and Elasticsearch ingest pipelines cannot
split one event into multiple documents, and documenting the two
supported options: splitting at collection time via input settings,
or a Logstash pipeline with the elastic_integration and split filters.

Also adds short pointers from the pages where users hit this
limitation: the Agent processors reference (limitations list and
options table), the ingest pipelines page, the transform-enrich
landing page, and the Agent-to-Logstash reference architecture.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Elastic Docs AI PR menu

Check the box to run an AI review for this pull request.

  • Review docs changes (docs-review). Status: not started.

Powered by GitHub Agentic Workflows and docs-actions. For more information, reach out to the docs team.

@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

✅ Elastic Docs Style Checker (Vale)

No issues found on modified lines!


The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale.

Fixes from a source-code validation pass against product HEAD:

- "one event in, one document out" -> processors and pipelines can
  also drop an event, so state the model as transform-or-drop
  (verified against the Processor contracts in elasticsearch and
  beats, which are strictly one-in, at-most-one-out)
- "CEL Custom API integration" -> "CEL Custom API input integration"
  and "Custom TCP" -> "Custom TCP Logs", matching the actual package
  titles in elastic/integrations
- integrations "require" data streams/ECS output -> "are designed to
  work with", matching the logstash-output-elasticsearch guidance
  (the hard error is only data_stream with ecs_compatibility
  disabled)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Docs convention: don't call out explicit subscription levels; link to
elastic.co/subscriptions instead.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bmorelli25 and others added 5 commits August 27, 2026 14:01
The splitting caveat was too prominent as a note in the page intro.
Move it into a new Limitations section at the end of the page,
alongside two related consequences of the one-document-at-a-time
model, both verified against elasticsearch source at HEAD:

- no cross-document reads except the enrich processor (the only
  shipped processor besides inference that receives a client, and
  the only one that queries indexed documents)
- pipelines run at index time only; reindex (dest.pipeline) or
  update by query (pipeline param) apply a pipeline to existing
  documents, and update by query works on data streams

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Reword the agent-ls ingest model line as a full sentence
- Remove the splitting signpost from the transform-enrich landing page
- Trim the agent-processors limitation bullet to the bare statement
  (the options table below it keeps the link to the how-to page)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Move the split-processor disambiguation out of the intro paragraph
  into a note after the scoping paragraph
- Replace "simplest" with "easiest" phrasing
- Trim the collection-time section's closing sentence

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@shainaraskas shainaraskas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

approving the toc change because we own it. lgtm? 🤷

@nastasha-solomon nastasha-solomon left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new page looks v nice, v good

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.

[Integrations] - Improve integration doc guidelines on document splitting

3 participants