회사 프로젝트에서 작업할 때 무심코
ES에서 Query를 사용할 때 무심코 모든 데이터를 다가져와서 사용했었는데
조회하는 데이터 사이즈가 상당히 큰 사이즈라서 성능이슈를 발생시킬 수 있다는 피드백을 받았다.
아래는 성능이슈를 발생시킬 수 있던 쿼리이다.
GET camo_al_was_acc_log/_search
{
"from": 0,
"size": 10000,
"query": {
"bool": {
"must": [
{
"range": {
"str_time_ui": {
"from": "2022-09-22 14:28:31",
"to": "2022-09-22 23:59:47",
"include_lower": true,
"include_upper": true,
"format": "yyyy-MM-dd HH:mm:ss",
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"explain": false,
"sort": [
{
"str_time_ui": {
"order": "asc"
}
}
],
"track_total_hits": 2147483647
}
해당 camo_al_was_acc_log 라는 인덱스에는 수많은 type들이 존재하는데 저렇게 쿼리를 날리면
그 수많은 모든 type 들을 다가져오게 되버린다.
당연히 응답속도도 느리다.
GET camo_al_was_acc_log/_search
{
"from": 0,
"size": 10000,
"_source": {
"includes": [ "str_time_ui", "src_ip" ]
},
"query": {
"bool": {
"must": [
{
"range": {
"str_time_ui": {
"from": "2022-09-22 14:28:31",
"to": "2022-09-22 23:59:47",
"include_lower": true,
"include_upper": true,
"format": "yyyy-MM-dd HH:mm:ss",
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"explain": false,
"sort": [
{
"str_time_ui": {
"order": "asc"
}
}
],
"track_total_hits": 2147483647
}
하지만 includes에 원하는 type만 적어주면
위의 예시에서는 딱 2개의 type들의 데이터만 가져오기 때문에 응답속도도 훨씬 빠르다.
'ElasticSearch' 카테고리의 다른 글
Elasticsearch 기본개념 정리 (3) : 매핑(Mapping)이란? (0) | 2023.02.11 |
---|---|
Elasticsearch 기본개념 정리 (1) : Elasticsearch의 개념과 특징, 노드(node) 그리고 클러스터(cluster)에 대해서 (0) | 2022.12.25 |
ElasticSearch - _delete_by_query 사용 (0) | 2022.03.16 |
ElasticSearch - 필드 데이터 타입 확인하기 (0) | 2022.03.02 |
ElasticSearch - 인덱스의 최대 필수 개수 제한 설정과 Aggregation 사용시 유념할 점 (0) | 2022.02.25 |