일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Kafka
- ELASTIC
- Mac
- query
- zip 파일 암호화
- matplotlib
- token filter test
- Java
- docker
- springboot
- TensorFlow
- flask
- MySQL
- zip 암호화
- Python
- 차트
- licence delete curl
- License
- Test
- aggregation
- 파이썬
- license delete
- 900gle
- sort
- high level client
- analyzer test
- API
- aggs
- Elasticsearch
- plugin
- Today
- Total
개발잡부
[java] API - file system cache (request cache) 본문
API 를 만들고 응답시간을 측정해서 최적의 성능을 만들어 보자
일단 제물이 될 index
820만건의 location-index
일단 aqqle 의 shop API 를 응용해서 후다닥 만들어 보자.
복붙해서 이름만 바꾸니까 1분 미만 컷
지금은 bool > filter > term 쿼리로 조회하니 응답속도가 빠르다.
일단 이 상태에서 리소스 사용과 응답속도를 측정해보잣
캐싱이 안되고 있지만 너무 빠르다
일단 지난 캐시 테스트와 같은 구조로 multi_match 쿼리 와 count집계(aggs) 를 두번 추가
전체쿼리
{
"size":100,
"query":{
"bool":{
"must":[
{
"multi_match":{
"query":"country_code",
"fields":[
"CO^1.0"
],
"type":"best_fields",
"operator":"OR",
"slop":0,
"prefix_length":0,
"max_expansions":50,
"zero_terms_query":"NONE",
"auto_generate_synonyms_phrase_query":true,
"fuzzy_transpositions":true,
"boost":1.0
}
}
],
"adjust_pure_negative":true,
"boost":1.0
}
},
"_source":{
"includes":[
],
"excludes":[
]
},
"aggregations":{
"COUNTRY":{
"terms":{
"field":"country",
"size":10,
"min_doc_count":1,
"shard_min_doc_count":0,
"show_term_doc_count_error":false,
"order":[
{
"_count":"desc"
},
{
"_key":"asc"
}
]
}
},
"CITY":{
"terms":{
"field":"city",
"size":10,
"min_doc_count":1,
"shard_min_doc_count":0,
"show_term_doc_count_error":false,
"order":[
{
"_count":"desc"
},
{
"_key":"asc"
}
]
}
}
}
}
자 이 쿼리로 테스트 해보자.
음.. 대충 이런상태고 그럼 이 상태에서 aggs 에 대한 캐싱처리
캐싱을 태워도 차이가 크지 않음.. 쿼리가 너무 신사적이여서.. 흉악범같은 쿼리로 다시 테스트
Aggs 에 subAggs 하나씩 추가 하고 캐시 지우고 테스트
약 290ms 악마같은 쿼리다.. 이제 캐싱처리하고 테스트
이제야 속도차이가 좀 나는구먼..
다음은 Aggs 와 Query 를 별개로 실행했을때 테스트
case - 검색어인 country_code 가 입력되었을때
- multi_match + aggs쿼리를 실행 해서 aggs에 대한 캐시를 생성
- multi_match 쿼리 실행해서 도큐먼트 검색
이렇게 두번 검색
https://father-lys.tistory.com/37
위에서 생각해봤던 꼼수가 먹히는 듯 보이는데 좀 더 확인해 봐야겠다.
'JAVA > springboot' 카테고리의 다른 글
[java] API - cache method (0) | 2023.10.15 |
---|---|
[java] API - redis cache (2) | 2023.10.09 |
[springboot] springboot kafka 연동하기 (0) | 2022.10.22 |
[springboot] 엑셀 (0) | 2022.02.21 |
[springboot] 프로젝트 생성 - intelliJ IDEA (0) | 2022.01.18 |