
Elasticsearch를 cloud 환경에서 사용하고 Spring Boot와 연동하는 방법은 이전 글에서 다뤘다. 이번 포스팅은 내가 개발하면서 특이하다고 느꼈던 것 몇 가지를 정리하고자 한다. 1. credential 처리하기 credential 을 처리 하기 위해, 먼저 username과 password를 생성해야 한다. 그런데 Elastic cloud 에서 왜 숨겨놨는지 찾기 힘든 위치에 있어서 찾는데 고생을 좀했다. ES main 페이지 > 본인 계정 옆에 Manage 버튼 클릭 > 좌측 Security 를 클릭 이러면 아래 페이지가 나오는데 여기서 Reset password를 누르면 elastic user의 password가 생성된다. 복사해놓거나 다운로드한다. 이제 client에서 위에 생성..

Docker 명령어는 실행이 되는데 아래와 같은 permission denied 에러를 뱉는 경우가 있다. 이 문제는 현재 사용자가 Docker 데몬에 액세스할 수 있는 권한이 없을 때 발생한다. Docker 데몬은 root 권한이 필요한 명령을 실행하기 때문에, Docker 데몬에 연결하려면 사용자가 root 권한을 줘야한다. sudo usermod -aG docker ${USER} 위 설정을 하고, 로그아웃 후 로그인하면 된다고 하는데 나는 안됐다. 그래서 에러메시지에서 말하는 docker.sock에 접근할 수 있는 권한을 줬다. sudo chmod 666 /var/run/docker.sock 이 명령어 이후에는 에러가 발생하지 않는다.

이전에 썼던 글에서 언젠가 Redis로 넘어갈 거라고 했었는데, 결국은 안정성 문제로 Redis를 쓰게 됐다. Redis가 고성능 인메모리 캐시라는 것 정도만 알고 있는데, 사용하기 전에 한번 짚고 들어가자. Redis 란? Redis는 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이센스), 메모리 내 데이터 구조 저장소 입니다. Redis는 문자열, 해시, 목록, 세트, 범위 쿼리가 있는 정렬된 세트 , 비트맵 , 하이퍼로그로그 , 지리공간 인덱스 및 스트림과 같은 데이터 구조를 제공합니다. Redis에는 복제 , Lua 스크립팅 , LRU 제거 , 트랜잭션 및 다양한 수준의 디스크 지속성이 내장되어 있습니다. Redis Sentinel을 통한 고가용성과 Red..

failed to create query: [knn] queries are only supported on [dense_vector] fields 여기서 예시는 knn으로 들었지만, _search를 이용한 Elasticsearch의 검색 알고리즘을 사용할 때 발생하는 문제이다. 말 그대로 knn 쿼리를 날린 필드가 dense_vector의 형태가 아니란 것이다. 에러를 발생시켜보자 테스트 코드는 엘라스틱 서치의 kNN search 가이드에서 가져왔다. 우선 테스트를 위해 데이터를 삽입한다. POST image-index/_bulk?refresh=true { "index": { "_id": "1" } } { "image-vector": [1, 5, -20], "title-vector": [12, 50, -..

회사에서 작은 프로젝트를 진행하는데 Elasticsearch 를 써볼 기회가 생겼다. 들어가기 전에 Elasticsearch 가 뭔지에 대해 간단히 정리해보자 Elasticsearch 란? Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진으로 분산형과 개방형을 특징으로 합니다. Elasticsearch는 Apache Lucene을 기반으로 구축되었으며, Elasticsearch N.V.(현재 명칭 Elastic)가 2010년에 최초로 출시했습니다. 간단한 REST API, 분산형 특징, 속도, 확장성으로 유명한 Elasticsearch는 데이터 수집, 보강, 저장, 분석, 시각화를 위한 무료 개방형 도구 모음인 El..

해당 기능을 쓰기 위해서는 GPT 유료 버전을 사용해야 합니다. GPT-4에만 탑재된 기능인 Code Interpreter로 csv파일이나 엑셀파일을 읽어와 데이터를 분석 및 시각화 할 수 있다. 본래 기능은 코드 컴파일러 같은 역할을 시키려고 했는지 이름이 Code Interpreter다. 나온지는 한달? 정도 된 기능인데, 정말 대단하다고 밖에 생각이 들지 않는 기능이라 공유해보려고한다. 이전 기능들과는 다르게 2023.7.24 기준 API는 제공하지 않는다.(Beta 버전의 API를 제공한다. 아래의 링크에 Java/Spring으로 구현한 API를 확인할 수 있다.) ChatGPT Assistants API 사용하기 (with. SpringBoot)이전에 GPT 웹사이트에서 Assistants(챗봇..
이전 글에서 AOP로 로그를 처리하도록 구현하고 만족도가 너무 높아서 추가적으로 AOP로 간단히 처리할게 뭐가 있을까에 대해 고민했었다. 코드를 쭉 보다보니, 요청 객체를 검증하기 위해 사용하는 @Valid 어노테이션과 BindingResult가 눈에 들어왔다. @GetMapping("...") public ResultVo validRequestTest(@Valid RequestObject requestObjectDto, BindingResult bindingResult) { if(bindingResult.hasErrors()) { throw new BadRequestException(); } return exampleService.get(requestObjectDto); } 요청 객체가 정상적이지 않을..
이전글 스프링부트에 로그 남기기의 개선 사항이다. 이렇게 로그를 남기려고 하니, 몇 가지 문제가 있었다. 1. 로그가 두 번 남는 문제 2. message에 똑같은 로그가 한번 더 출력되는 문제 3. 모든 API 마다 set을 해줘야함 4. 윗 글엔 작성하지 않았지만, 요청 객체를 남기는 방식의 문제 이번 글에서는 1, 2, 3번 내용만 다룰 거고, 4번은 다음 글에서 다루려고 한다. 로그가 두번 남는 이슈 이 문제는 slf4j와 logback 설정을 잘못 이해해서였다. 기존 logback-spring.xml을 열어보면 아래와 같이 설정되어 있었다. [ignore] [ignore] [ignore] [ignore] [ignore] [ignore] [ignore] 별도의 새로 구현한 로그매니저를 통해 관리하..
- Total
- Today
- Yesterday
- ecs
- serverless
- docker
- 티스토리챌린지
- elasticsearch
- ChatGPT
- JWT
- EKS
- AWS
- 후쿠오카
- Kotlin
- Redis
- java
- AOP
- lambda
- 오블완
- 스프링부트
- Log
- S3
- 람다
- GIT
- Spring
- AWS EC2
- terraform
- 인프런
- cache
- OpenAI
- springboot
- CORS
- CloudFront
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |