-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Description
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.