У нас есть сложный объект с вложенными полями, имена которых могут быть динамическими c и содержат точку. Когда я пытаюсь ввести данные вasticsearch, он дает мне следующую ошибку
Object mapping for [x] tried to parse field [x.y] as object, but found a concrete value
Одна запись может иметь ключ / значения, такие как a.b.c:4
, а в другой записи он может иметь a.b:3
. У нас нет контроля над источником поступающих данных, поэтому единственной возможностью может быть изменение объекта в logsta sh. Вот пример приходящего объекта:
{
"result": "https://www.yahoo.com",
"tags": {
"url": "https://www.yahoo.com",
"projectName": "monitor",
"host": "ttt",
"dd": 12345,
"vv": "kk"
},
"timestamp": 1586599441000,
"runId": 12345,
"performance": {
"x.y.z": 31307
},
"channel": "clientperf",
"asset": {
"a.b.c": 5,
"a.b":4
}
}
, поскольку вы видите значения внутри актива, а производительность имеет точку. Поля в корнях (такие как runId, performance и ...) в порядке. Как я могу решить это либо с заменой точки в logsta sh, либо с тем, что не дает мне ошибки. Я знаю о плагине de_dot
, но чтобы использовать его, нам нужно конкретно указать, как называются вложенные поля, в то время как мы не можем принудительно назначить именование для будущих записей. Я также знаю, что мы, вероятно, можем добиться этого с помощью плагина ruby
но у меня нулевое знание ruby. Любая помощь может быть оценена.