elasticsearch에서는 nested type을 사용할 수 있다.
문서안에 object array를 저장할 수 있고, 그것이 nested type이다.
es가이드에 나온 예제 처럼 user object를 array형태로 넣을 수 있다.
{
"group" : "fans",
"user" : [
{
"first" : "John",
"last" : "Smith",
"score" : 90
},
{
"first" : "Alice",
"last" : "White",
"scroe" : 100
}
]
}
내가 임의로 score라는 필드도 추가해 넣어보았다.
그러면 nested 영역에 들어가지 않는 "group"이라는 필드를 key로 score의 sum을 구하고 싶다면 어떻게 해야할까?
아래와 같이 reverse_nested 구문을 사용하면 된다.
주의 할 것은 먼저 nested한 영역부터 작성해주고 그 안에 reverse_nested, nested 밖 내용을 작성해주면 된다.
"aggs": {
"user": {
"nested": {
"path": "user"
},
"aggs": {
"score": {
"sum": {
"field": "combined_struct.score"
},
"aggs": {
"group_by_key": {
"reverse_nested": {},
"aggs": {
"group_sum_score": {
"terms": {
"field": "group"
}
}
}
}
}
}
}
}
}
https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html
'우리는 개발자 > Data Engineering' 카테고리의 다른 글
[kubernetes] mac에 minikube설치하기. (0) | 2020.02.18 |
---|---|
[elasticsearch] refresh, flush, optimize API. 루씬과의 비교. (0) | 2020.01.27 |
[elasticsearch] fielddata, doc_values에 대한 이해. (0) | 2020.01.11 |
[elasticsearch] cluster update setting. persistent, transient, default. (0) | 2019.12.20 |
[elasticsearch] java heap memory 설정 하기 + es node 재시작. (0) | 2019.12.18 |