이 질문을 어떻게 구성해야할지 모르겠으므로 예제로 들어가 보겠습니다. 나는 다음과 같은 문서가 한 가정 :형제를 모아 놓은 중첩 된 용어 집계
elements
중첩 된 문서를 포함
{
elements: [
{name: 'foo'},
{name: 'bar'},
{name: 'baz'}
]
},
{
elements: [
{name: 'foo'},
{name: 'baz'}
]
}
. 모든 name
이상을 집계하여 형제가 해당 요소와 함께 나타나는 횟수를 계산할 수 있기를 원합니다.
e.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를 사용 중입니다.