질문을 공식화하는 방법을 잘 모릅니다. 나는 Elasticsearch 2.2를 사용하고 있습니다. 탄성 검색 : 두 필드에 집계
은의 5 문서를 만든 데이터 세트의 예를 들어, 시작하자 :[
{
"header": {
"called_entity": { "uuid": "a" },
"coverage_entity": {},
"sucessful_transfers": 1
}
},
{
"header": {
"called_entity": { "uuid": "a" },
"coverage_entity": { "uuid": "b" },
"sucessful_transfers": 1
}
},
{
"header": {
"called_entity": { "uuid": "b" },
"coverage_entity": { "uuid": "a" },
"sucessful_transfers": 1
}
},
{
"header": {
"called_entity": { "uuid": "b" },
"coverage_entity": { "uuid": "a" },
"sucessful_transfers": 0
}
}
]
called_entity 항상 UUID 있습니다. coverage_entity은 비어 있거나 uuid입니다.
는 내가 원하는 중 하나 가 또는 이을 coverage_entity.uuid called_entity.uuid에 집계 한 다음 문서의 총량과 successful_transfers의 합을 계산하는 것입니다. 그래서,이 다섯 개 문서, 나는 결과로 그런 일을했을 :
uuid,doc_count,successful_transfers_count
"a",4,3
"b",3,2
문제는이 같은 문서를 여러 집계에서 사용할 수있는 의미입니다 오래 집계 키에 하나 같이 called_entity.uuid 또는 coverage_entity.uuuid (가능한지 확실하지 않으므로 여기에 게시됩니다). 단순히 에 집계됩니다 내가 현재하고 있어요
는 필드를 called_entity.uuid하지만 충분하지 않습니다 물론 :
uuid,doc_count,successful_transfers_count
"a",2,2
"b",2,1
:
{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"dim_1": {
"terms": {
"field": "header.called_entity.uuid",
"size": 0
},
"aggs": {
"successful_transfers": {
"sum": {
"field": "header.successful_transfers"
}
}
}
}
}
}
나에게 뭔가를 제공합니다. .. 내가 원하는 것이 아니야. 그렇다면 주어진 집계에 대해 여러 가지 값인 또는을 어떻게 집계 할 수 있습니까? 집계에있는 것뿐만 아니라 모든 문서에있는 값을 기반으로 데이터를 계산할 수 있습니까?
감사합니다.
... 젠장. 그것은 작동합니다. 정말 고맙습니다. 정확히 어떻게 작동하는지 설명해 주시겠습니까? – Raphael
이 집합은 두 필드의 용어를 생성합니다 : 해당 스크립트를 사용하는'called_entity.uuid'와'coverage_entity.uuid'. 집계는 하나의 필드 만보고 있었고, 말했듯이 두 필드의 값이 동시에 필요합니다. –
그래, 내부적으로 어떻게 작동하는지 알 것 같아. 고맙습니다. – Raphael