Elasticsearch 2.20 입문서: 집합 작업
8710 단어 elasticsearch로그 분석세크람드secilog
데이터 준비: 몇 가지 데이터를 삽입합니다.
요청: POST localhost: 9200/customer/external/?pretty
매개변수:
{"name": "secisland","age":25,"state":"open","gender":"woman","balance":87 }
{"name": "zhangsan","age":32,"state":"close","gender":"man","balance":95 }
{"name": "zhangsan1","age":33,"state":"close","gender":"man","balance":91 }
{"name": "lisi","age":34,"state":"open","gender":"woman","balance":99 }
{"name": "wangwu","age":46,"state":"close","gender":"woman","balance":78 }
이 중 5개의 데이터를 삽입하여 테스트한다.
데이터가 확보되면 우리는 집합 테스트를 진행한다.
예: 모든 고객을 상태별로 그룹화한 다음 상위 10(기본값) 상태로 돌아가 통계(기본값)로 정렬합니다.
요청: POSThttp://localhost:9200/customer/_search?pretty
매개변수:
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state"
}
}
}
}
이 검색 조건은 관계 데이터베이스에 있는 그룹 by와 유사합니다.
SELECT state, COUNT(*) FROM customer GROUP BY state ORDER BY COUNT(*) DESC
반환 결과:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 5,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"group_by_state" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "close",
"doc_count" : 3
}, {
"key" : "open",
"doc_count" : 2
} ]
}
}
}
우리는 그 중에서 알 수 있듯이 2개의close상태의 고객, 2개의open상태의 사용자가 있다.
다음은 우리가 위에서 다시 한 가지 기능을 추가하는 것이 바로 통계 상태와 동시에 각 상태의 평균 잔액을 계산하는 것이다.
요청은 아까와 같지만 매개 변수가 변경되었습니다. 아래 매개 변수를 보십시오.
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state"
},
"aggs": {
"average_balance": {
"avg": {
"field": "balance"
}
}
}
}
}
}
조회 결과는 다음과 같습니다.
{
"took" : 16,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 5,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"group_by_state" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "close",
"doc_count" : 3,
"average_balance" : {
"value" : 88.0
}
}, {
"key" : "open",
"doc_count" : 2,
"average_balance" : {
"value" : 93.0
}
} ]
}
}
}
그룹에 어떻게 끼워 넣는지 자세히 살펴보세요_by_state 모으기 중average_밸런스 모으기.이것은 집합의 흔히 볼 수 있는 모델이다.집합 후 임의의 필드를 다시 집합하여 우리가 원하는 결과를 얻을 수 있다.
아래의 예를 보면 우리는 위에서 얻은 결과에서 다시 평균 계좌 금액에 대해 순서를 낮추어 배열한다.
요청은 이전과 같습니다.
매개변수:
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state",
"order": {
"average_balance": "desc"
}
},
"aggs": {
"average_balance": {
"avg": {
"field": "balance"
}
}
}
}
}
}
조회 결과:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 5,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"group_by_state" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "open",
"doc_count" : 2,
"average_balance" : {
"value" : 93.0
}
}, {
"key" : "close",
"doc_count" : 3,
"average_balance" : {
"value" : 88.0
}
} ]
}
}
}
본고는 세크람드(secisland)가 창작한 것으로 작가와 출처를 명시해 주십시오.
다음 예는 비교적 복잡하다. 어떻게 연령대(연령 20-29세, 30-39세, 40-49)를 통과한 다음에 성별을 통해 마지막으로 각 연령대, 각 성별의 평균 계좌 잔액을 얻는지 보여준다.
{
"size": 0,
"aggs": {
"group_by_age": {
"range": {
"field": "age",
"ranges": [
{
"from": 20,
"to": 30
},
{
"from": 30,
"to": 40
},
{
"from": 40,
"to": 50
}
]
},
"aggs": {
"group_by_gender": {
"terms": {
"field": "gender"
},
"aggs": {
"average_balance": {
"avg": {
"field": "balance"
}
}
}
}
}
}
}
}
쿼리된 반환 결과:
{
"took" : 15,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 5,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"group_by_age" : {
"buckets" : [ {
"key" : "20.0-30.0",
"from" : 20.0,
"from_as_string" : "20.0",
"to" : 30.0,
"to_as_string" : "30.0",
"doc_count" : 1,
"group_by_gender" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "woman",
"doc_count" : 1,
"average_balance" : {
"value" : 87.0
}
} ]
}
}, {
"key" : "30.0-40.0",
"from" : 30.0,
"from_as_string" : "30.0",
"to" : 40.0,
"to_as_string" : "40.0",
"doc_count" : 3,
"group_by_gender" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "man",
"doc_count" : 2,
"average_balance" : {
"value" : 93.0
}
}, {
"key" : "woman",
"doc_count" : 1,
"average_balance" : {
"value" : 99.0
}
} ]
}
}, {
"key" : "40.0-50.0",
"from" : 40.0,
"from_as_string" : "40.0",
"to" : 50.0,
"to_as_string" : "50.0",
"doc_count" : 1,
"group_by_gender" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "woman",
"doc_count" : 1,
"average_balance" : {
"value" : 78.0
}
} ]
}
} ]
}
}
}
위의 예에서 알 수 있듯이 Elasticsearch의 집합 능력은 매우 강하다.
세크랜드(secisland)는 후속적으로 Elasticsearch의 최신 버전의 각종 기능을 점차적으로 분석할 것이니 기대해 주십시오. 또한 secisland 공중호에 가입하여 관심을 가지는 것을 환영합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.