본문 바로가기

전체 글252

Elasticsearch) Bool 복합 쿼리 , Should, 정확값 쿼리, 범위 쿼리 query_string 쿼리는 여러 조건을 조합하기 좋지만 옵션이 한정되어있음. Data Body 검색에서 여러 쿼리를 조합하기 위해서는 상위에 bool 쿼리를 사용하고 그 안에 다른 쿼리들을 넣어 사용 가능. bool 쿼리는 다음의 4개 인자를 가지고 있고 그 인자 안에 다른 쿼리들을 배열로 넣는 형식으로 동작. must : 쿼리가 참인 도큐먼트 검색 must_not : 쿼리가 거짓인 도큐먼트 검색 should : 검색 결과 중 이 쿼리에 해당하는 도큐먼트들의 점수를 높임 filter : 쿼리가 참인 도큐먼트를 검색하지만 스코어를 계산하지 않음. must보다 검색속도가 빠르고 캐싱 가능 Bool Query 사용방법 GET /_search { "query": { "bool": { "must": [ { }.. 2023. 12. 8.
Elasticsearch) Query DSL 검색 수많은 데이터에서 조건에 부합하는 데이터만 가져오는 행위 풀텍스트 쿼리 (Full Text Query) match_alll 별다른 조건없이 해당 인덱스의 모든 도큐먼트를 검색하는 쿼리. 검색 시 쿼리를 넣지 않으면 자동 match_all GET my_index/_search match 풀 텍스트 검색에 사용되는 가장 일반적인 쿼리 GET my_index/_search { "query": { "match": { "message": "dog" } } } 검색 결과의 default는 or 조건 GET my_index/_search { "query": { "match": { "message": "quick dog" } } } 이렇게 하면 quick or dog가 있는 모든 도큐먼트를 찾음. 검색 조건을 A.. 2023. 12. 8.
Elasticsearch) CRUD ES의 단일 데이터는 document index는 document의 논리적인 집합. 도큐먼트 접근 http://://_doc/ 데이터 입력(PUT) PUT 이용 PUT my_index/_doc/1 { "name":"Jongmin Kim", "message":"안녕하세요 Elasticsearch" } 이미 있는 인덱스에 아래와 같은 데이터를 PUT명령으로 넣게 되면 이전 document는 사라지고 덮어씌워짐. PUT my_index/_doc/1 { "age:":40 } 데이터 보기 GET my_index/_doc/1 데이터 삭제 DELETE my_index/_doc/1 //인덱스에 해당하는 data만 삭제됨. DELETE my_indx //인덱스 통째로 삭제 수정(POST) post명령으로 처음 데이터를 .. 2023. 12. 8.
Elasticsearch 활용) 인덱스 샤드 모니터링 https://esbook.kimjmin.net/03-cluster/3.2-index-and-shards 3.2 인덱스와 샤드 - Index & Shards - Elastic 가이드북 인덱스를 생성할 때 별도의 설정을 하지 않으면 7.0 버전부터는 디폴트로 1개의 샤드로 인덱스가 구성되며 6.x 이하 버전에서는 5개로 구성됩니다. 클러스터에 노드를 추가하게 되면 샤드들이 각 esbook.kimjmin.net document : Elasticsearch에 있는 낱개 데이터 index : document의 논리적인 집합 인덱스는 샤드라는 개념으로 분리되어 여러 개의 노드에 흩어져서 저장. 처음 생성된 샤드를 프라이머리 샤드(Primary Shard), 복제본은 리플리카(Replica) 같은 샤드와 복제본은 .. 2023. 12. 7.
Kibana Kibana란? ) 데이터의 형태를 만들고, Elastic Stack을 탐색할 수 있게 하는 시각화 및 관리 서비스. Kibana로 다음과 같은 작업들을 할 수 있다. 1. 검색, 관찰, 데이터 보호 kibana는 document 검색에서 log분석, 보안 취약성 찾기와 같은 기능에 access 할 수 있는 portal이다. 2. 데이터 분석 숨은 insight를 찾고 차트, 그래프 등에 발견한 내용을 시각화 한 뒤 대시보드를 구성한다. 3. Elastic Stack 관리, 모니터링 보안 data를 관리하고, Elastic Stack cluster상태를 모니터링하고, 어떤 사용자가 어떤 기능에 access할 수 있는지 제어한다. kibana를 elastic-3 노드에 실행하고 키바나와 elasticsea.. 2023. 12. 7.
Elastic Search 설치 및 환경설정 Elastic Search란 ? ) 오픈소스 검색엔진. 키워드가 어떤 document에 있다고 저장하는 방식. GCP에 SSH 키 등록하는 방법 https://blog.wsgvet.com/google-cloud-platform-ssh-key-putty-connection/ 구글 클라우드 플랫폼에서 SSH키 생성 후 PuTTY 접속하기 구글 클라우드 플랫폼에서 SSH로 접속할 때, 기본적으로 제공하는 브라우저 접속은 로그인이 필요하고, 반응… blog.wsgvet.com 에러발생 ES 설치 후 또 다른 putty 터미널 창에서 curl -XGET localhost:9200으로 접속 시 curl: (52) Empty reply from server 에러 접속 할 때 HTTP를 사용해서 발생하는 에러. con.. 2023. 12. 7.
GiftFunding) 헤더에 JWT 토큰으로 로그인 후 사용자 정보 얻기 프로젝트에 로그인 기능을 구현하고 추후 권한이 필요한 리소스에 접근할 때 헤더에 입력된 토큰을 컨트롤러에서 @ReqeustHeader로 받아와서 서비스 단에 넘겨준 후 토큰에서 claims를 파싱해서 subject를 뽑아내고 DB에서 사용자를 찾아 검증하는 로직을 만들었었다. 근데 멘토님이 컨트롤러에서 Authentication을 컨트롤러에서 받아오면 서비스 단에 헤더에 입력된 토큰으로부터 파싱하는 작업이 필요 없을 것이라고 하셔서 적용해보기로 했다. @AuthenticationPrincipal 로그인 한 정보 받아오기 로그인 사용자가 필요할 때 매번 서버에 요청을 보내 DB에 접근해서 데이터를 가져오는 것은 비효율 적이다. 한 번 인증된 사용자 정보를 세션에 담아놓고 세션이 유지되는 동안 사용자 객체를.. 2023. 12. 1.
GiftFunding)필터 내 예외 처리 접근 권한이 필요한 리소스에 접근 할 때 토큰의 유효성을 검증하는 과정에서 @ControllerAdvice, @ExceptionHandler로 처리해 오류 코드를 내려주려고 했는데 null 에러가 뜨는 것을 확인했다. 다른 분들이 피드백을 주셨는데 필터 내 예외처리는 일반 컨트롤러단에서 예외처리하는 것과 다르게 해줘야 한다는 것을 알게되었다. @ControllerAdvice 와 @ExceptionHandler - @ExceptionHandler는 @Controller가 적용된 Bean에서 발생하는 예외를 잡아 하나의 메서드에서 처리. - @ControllerAdvice는 @Controller 어노테이션이 적용된 모든 곳에서 발생하는 예외를 처리. 따라서 @ControllerAdvice가 적용된 클래스에 .. 2023. 11. 30.
GiftFunding) Dirth Checking (feat.회원정보 입력된 부분 일부만 수정할 때) 더티체킹(Dirth Checking)이란 ? Dirth ) 엔티티 데이터의 변경된 부분 Dirth Checking) 변경된 부분을 감지한다. JPA에서 영속성 컨테이너가 관리하는 엔티티의 상태를 감지해서 변경된 부분이 있다면 자동으로 트랜잭션이 끝나는 시점에 데이터베이스에 반영하는 기능. 개발자가 update 관련된 쿼리를 작성하지 않아도 되기 때문에, 코드의 복잡성을 줄일 수 있다는 특징이 있다. 더티 체킹 조건 영속성 컨텍스트에서 관리되는 엔티티 영속성 컨텍스트는 엔티티를 처음 조회할 때 시작되며, 이후 변경을 감지한다. 준영속(Detach된 엔티티)/비영속(DB에 반영되기 전 처음 생성된 엔티티) 상태의 엔티티는 더티체킹의 대상이 되지 못 한다. == 값을 변경해도 DB에 반영되지 않는다. 영속성 .. 2023. 11. 30.
728x90