Nicht ganz sicher, wie diese Frage zu bilden, damit ich in ein Beispiel springen werde. Angenommen, ich habe folgende Dokumente:Verschachtelte Begriffe Aggregation, die über Geschwister aggregiert
{
elements: [
{name: 'foo'},
{name: 'bar'},
{name: 'baz'}
]
},
{
elements: [
{name: 'foo'},
{name: 'baz'}
]
}
Wo elements
verschachtelte Dokumente enthalten. Ich möchte in der Lage sein, über alle name
zu aggregieren und zählt, wie oft ein Geschwister mit diesem Element erscheint.
I.e.
{
foo: {
bar: 1,
baz: 2
},
bar: {
foo: 1,
baz: 1
},
baz: {
foo: 2,
bar: 1
}
}
Gibt es eine gute Möglichkeit, dies mit elasticsearch aggregations zu tun? Mein primitives Verständnis von Aggregationen in ES hatte mich etwas tun wie:
"aggs": {
"elements": {
"nested": {
"path": "elements"
},
"aggs": {
"names": {
"terms": {
"field": "elements.name",
"size": 20
},
"aggs": {
"more_elements": {
"terms": {
"field": "elements.name",
"size": 20
}
}
}
}
}
}
}
Welche gibt völlig falsche Ergebnisse. Ich am Ende immer etwas, wie:
{
foo: {
doc_count: 2,
foo: 2
},
bar: {
doc_count: 1,
foo: 1
},
baz: {
doc_count: 2,
foo: 2
}
}
Jede Hilfe ist sehr zu schätzen! Ich verwende derzeit ES 5.4, wenn das wichtig ist.