Skip to content

Dotted field names that conflict with objects #63530

@jpountz

Description

@jpountz

Elasticsearch assumes that dots in fields names are an object separator. This means that a document such as this one:

{
  "metric.value.max": 42
}

is actually indexed as if it was formatted like below:

{
  "metric": {
    "value": {
      "max": 42
    }
  }
}

And in the mappings, this translates into two object fields called metric and metric.value and a long field called metric.value.max.

This proves problematic when ingesting metrics that come from external systems such as Micrometer or OpenTelemetry, as it's not rare to have both metric.value and metric.value.max as metric names:

{
  "metric.value": 10,
  "metric.value.max": 42
}

Such a document will always fail indexing because metric.value would need to be an object field because of metric.value.max and a long field at the same time, which is illegal.

Some workarounds have been developed, such as replacing dots with underscores, or adding suffixes, but this creates a bad user experience in Kibana as users are not seeing the field names that they expect.

We should look into ways to make this supported in Elasticsearch.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions