﻿---
title: Ingest metrics into a TSDS using the OTLP/HTTP endpoint
description: How OpenTelemetry metrics sent to the Elasticsearch OTLP/HTTP endpoint are stored in time series data streams.
url: https://www.elastic.co/elastic/docs-builder/docs/4384/manage-data/data-store/data-streams/tsds-ingest-otlp
products:
  - Elastic Documentation
  - Elasticsearch
applies_to:
  - Elastic Cloud on Kubernetes: Generally available
  - Elastic Cloud Enterprise: Generally available
  - Self-managed Elastic deployments: Generally available since 9.2
---

# Ingest metrics into a TSDS using the OTLP/HTTP endpoint
Elasticsearch accepts [OpenTelemetry Protocol (OTLP)](https://opentelemetry.io/docs/specs/otlp) metrics on `/_otlp/v1/metrics`, one of the [Elasticsearch OTLP/HTTP endpoint](https://www.elastic.co/elastic/docs-builder/docs/4384/manage-data/ingest/otlp-endpoint) paths.
The endpoint is a native ingest API, like the [bulk API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-bulk).
To decide whether to use the OTLP endpoint for OpenTelemetry metrics, refer to [When to use the Elasticsearch OTLP endpoint](/elastic/docs-builder/docs/4384/manage-data/ingest/otlp-endpoint#when-to-use).
In most setups, applications send metrics to the Elastic Cloud Managed OTLP Endpoint or to an [Elastic Agent in Gateway mode](https://docs-v3-preview.elastic.dev/elastic/docs-builder/docs/4384/reference/edot-collector/config/default-config-standalone#gateway-mode) rather than to this endpoint.
Elasticsearch stores metrics that arrive on `/_otlp/v1/metrics` as follows:
- Elasticsearch writes records to [time series data streams (TSDS)](https://www.elastic.co/elastic/docs-builder/docs/4384/manage-data/data-store/data-streams/time-series-data-stream-tsds).
  Built-in index templates create the data streams on first write, and [routing](/elastic/docs-builder/docs/4384/manage-data/ingest/otlp-endpoint#routing-to-data-streams) follows the `<type>-<dataset>.otel-<namespace>` pattern.
- The endpoint derives dimensions and metric mappings from OTLP metadata, so you don't need to set them up manually.
  Metric points are [deduplicated based on their dimensions and timestamp](/elastic/docs-builder/docs/4384/manage-data/data-store/data-streams/time-series-data-stream-tsds#time-series-dimension).
- Elasticsearch stores histogram metrics using the `exponential_histogram` or `histogram` field type, depending on your version and the [histogram handling setting](/elastic/docs-builder/docs/4384/manage-data/ingest/otlp-endpoint#configure-histogram-handling-for-metrics).
- <applies-to>Elastic Stack: Generally available since 9.5</applies-to> The endpoint preserves the [temporality](https://www.elastic.co/elastic/docs-builder/docs/4384/manage-data/data-store/data-streams/metric-temporality) of each metric in a `temporality` dimension, so ES|QL time series queries and downsampling interpret counters and histograms correctly.

For request details, authentication, and limitations, refer to the [Elasticsearch OTLP/HTTP endpoint](https://www.elastic.co/elastic/docs-builder/docs/4384/manage-data/ingest/otlp-endpoint) reference.