この質問をどのように形成するかはわかりませんので、私はその例に飛びます。私は、次の書類を持っていると仮定すると:ネストされた条件の集計が兄弟の上に集まる
elements
は、ネストされた文書を含む
{
elements: [
{name: 'foo'},
{name: 'bar'},
{name: 'baz'}
]
},
{
elements: [
{name: 'foo'},
{name: 'baz'}
]
}
。私はすべてname
を集計して、兄弟がその要素に何回出現したかを数えることができるようにしたいと考えています。
I.e.
{
foo: {
bar: 1,
baz: 2
},
bar: {
foo: 1,
baz: 1
},
baz: {
foo: 2,
bar: 1
}
}
elasticsearch集約を使用してこれを行うためのきちんとした方法はありますか? ESでの集約の私の初歩的な理解は私のような何かをしていた:
"aggs": {
"elements": {
"nested": {
"path": "elements"
},
"aggs": {
"names": {
"terms": {
"field": "elements.name",
"size": 20
},
"aggs": {
"more_elements": {
"terms": {
"field": "elements.name",
"size": 20
}
}
}
}
}
}
}
これは完全に間違った結果を与えます。私は次のようなものになります:
{
foo: {
doc_count: 2,
foo: 2
},
bar: {
doc_count: 1,
foo: 1
},
baz: {
doc_count: 2,
foo: 2
}
}
何か助けていただきありがとうございます!私が現在ES 5.4を使用しているのは重要です。