Ich bin auf der Suche nach einigen Zeigern auf die Zuordnung einer etwas dynamischen Struktur für den Verbrauch von Elasticsearch.Elasticsearch Mapping der verschachtelten Struktur
Die rohe Struktur selbst ist json, aber das Problem ist, dass ein Teil der Struktur eine Variable enthält und nicht die äußeren Elemente der Struktur statisch sind.
eine etwas geschwärzten Beispiel zu bieten, sieht meine Json wie folgt aus:
"stat": {
"state": "valid",
"duration": 5,
},
"12345-abc": {
"content_length": 5,
"version": 2
}
"54321-xyz": {
"content_length": 2,
"version", 1
}
Der erste Block ist einfach; Elasticsearch macht eine gute Arbeit beim Zuordnen des "stat" -Teils der Struktur, und wenn ich viele dieser Daten in einen Index ablegen würde, würde es wie erwartet funktionieren. Das Problem ist, dass die nächsten 2 Blöcke im Wesentlichen die gleiche Sache sind, aber der rohe JSON so formatiert ist, dass sich ein einzigartiges Element in die Struktur eingeschlichen hat, und Elasticsearch dies standardmäßig zuordnen möchte, erzeugt eine Map, die so aussieht :
"stat": {
"properties": {
"state": {
"type": "string"
},
"duration": {
"type": "double"
}
}
},
"12345-abc": {
"properties": {
"content_length": {
"type": "double"
},
"version": {
"type": "double"
}
}
},
"54321-xyz": {
"properties": {
"content_length": {
"type": "double"
},
"version": {
"type": "double"
}
}
}
ich die Fähigkeit zu indizieren alle „content_length“ Daten erhalten möchten, aber es wird immer getrennt und mit einigen der Variablennamen verwendet werden, wenn ich die Daten in Kibana lasse ich aufzuwickeln mit wirklich lange Feldnamen, die neben nutzlos werden.
Ist es möglich, der Struktur ein generisches Tag zur Verfügung zu stellen? Oder wird dies in der json-generationsphase eher trivial behandelt, wobei unsere Entwickler einen generischen Strukturnamen hart codieren und einen Identifier-Feldnamen hinzufügen.
Jeder Einblick/Hilfe sehr geschätzt.
Danke!
Ich verstehe nicht, was das gewünschte Verhalten ist. Was ist für die von Ihnen bereitgestellte Stichprobe die erwartete Zuordnung, die ES selbst erstellen sollte? –
Ich möchte in der Lage sein, alle Datensätze für die gleiche Struktur zu aggregieren, aber der rohe JSON gibt die Namen der Strukturvariablen an. Das bedeutet auch, dass, wenn der JSON ein seltsames Problem hätte, wie ein numerischer Wert in Anführungszeichen, ich nicht in der Lage wäre, das Mapping zu überschreiben, ohne vorher zu wissen, wie die Strukturen aussehen werden, was nicht scheint praktisch. Nachdem dies gesagt wurde, denke ich immer mehr, dass dies auf die rohe JSON-Struktur zurückzuführen ist, und das ist der Punkt, an dem ich Änderungen vornehmen muss, wie unten im Kommentar von Ajaele erwähnt. – VirtualGreg