전체 글
-
03. Query MethodBackEnd/Spring Data JPA 2021. 10. 25. 22:47
1. 메소드 이름으로 쿼리 생성 Spring Data JPA는 메소드 이름을 분석해서 JPQL을 생성하고 실행합니다. 해당 기능은 엔티티의 필드명이 변경되면 인터페이스에 정의한 메서드 이름도 반드시 변경해야 합니다. 그렇지 않으면 애플리케이션을 시작하는 시점에 오류가 발생합니다. // Spring Data JPA Repository public interface MemberRepository extends JpaRepository { List findByUsernameAndAgeGreaterThan(String username, int age); } // JPA Repository public List findByUsernameAndAgeGreaterThan(String username, int age)..
-
02. Spring Data JPABackEnd/Spring Data JPA 2021. 10. 25. 21:32
Spring Data JPA는 JPA 기반 Repositories를 쉽게 구현할 수 있는 모듈입니다. 사용자 정의 파인더 메소드를 포함하여 Repository 인터페이스를 작성하면 Spring이 자동으로 구현을 제공합니다. 특징 Spring과 JPA 기반 Repositories 구축 지원 Querydsl 지원 및 type-safe JPA 쿼리 도메인 클래스의 투명한 감사 Pagination 지원, 동적 쿼리 실행, custom data 접근 코드 통합 기능 부트스트랩 시간에 @Query 어노테이션이 있는 쿼리의 유효성 검사 XML 기반 엔티티 매핑 지원 @EnableJpaRepositories를 도입하여 JavaConfig 기반 저장소 구성 JpaRepository 인터페이스 JpaRepository 인..
-
01. 프로젝트 환경설정BackEnd/Spring Data JPA 2021. 10. 23. 12:20
1. 프로젝트 생성 2. 롬복 적용 1) Preferences plugin lombok 검색 실행 (재시작) 2) Preferences Annotation Processors 검색 Enable annotation processing 체크 (재시작) 3) 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인 3. IntelliJ 설정 변경(실행속도 향상) 1) Preferences Build, Execution, Deployment Build Tools Gradle 2) Build and run using: Gradle IntelliJ IDEA 3) Run tests using: Gradle IntelliJ IDEA 4. H2 데이터베이스 설치 1) https://www.h2database.c..
-
20. 엘라스틱서치 클라이언트 (JAVA Client)BackEnd/Elasticsearch 2021. 10. 15. 18:29
엘라스틱서치에서 지원하는 언어별 라이브러리 ■ Java REST Client ■ Java API ■ JavaScript API ■ Groovy API ■ .NET API ■ PHP API ■ Python API ■ Ruby API ■ Community Contributed Clients ■ 참고 : https://www.elastic.co/guide/en/elasticsearch/client/index.html 자바 클라이언트 모듈 1) REST 클라이언트 > Java High Level REST Client라고도 불린다. > HTTP 방식을 이용해 엘라스틱서치와 통신한다. > 내부적으로는 HttpClient 모듈을 사용한다. 2) Transport 클라이언트 > Java Client라고도 불린다. > ..
-
19. 스냅숏(Snapshot)을 이용한 백업과 복구BackEnd/Elasticsearch 2021. 10. 12. 17:41
엘라스틱서치에서 제공하는 _snapshot API을 이용해 개별 인덱스를 백업할 수도 있고 클러스터 전체를 스냅숏으로 만드는 것도 가능합니다. 1. 백업 # 1) config 폴더 내 elasticsearch.yml 설정 파일에 스냅숏 경로 지정 path.repo: ["/home/snapshot/elastic/backup"] # 2) 검색엔진 재시작 # 3) 리포지토리(스냅숏들을 저장하는 논리적인 공간) 생성 PUT _snapshot/movie_data_backup { "type": "fs", "settings": { "location": "/home/snapshot/elastic/backup", "compress": true } } # 4) 스냅숏 생성 # 기본적으로 스냅숏 대상이 되는 인덱스는 더 이..
-
18. 별칭(Alias)BackEnd/Elasticsearch 2021. 10. 12. 17:23
엘라스틱서치 클러스터를 운영 중에 인덱스 매핑 설정이 변경되거나 인덱스가 깨진다면 기존에 생성된 인덱스를 삭제하고 다시 생성해야 합니다. 운영 중인 서비스에 인덱스를 삭제하게 되면 장애가 발생할 것입니다. 이러한 문제를 방지하기 위해 엘라스틱서치에서는 별칭(Alias) 기능을 제공합니다. 인덱스를 생성할 때 별칭을 사용해 인덱스가 추가되거나 삭제될 경우 새로운 인덱스로 사용자 요청이 자연스럽게 이동하도록 유도합니다. 또한 인덱스의 별칭을 이용하면 두 개 이상의 인덱스를 검색해야 할 때 한 번의 요청만으로도 모두 검색되도록 만들기도 쉽습니다. # 인덱스 생성 POST _reindex { "source": { "index": "movie_search" }, "dest": { "index": "movie_in..
-
17. 검색 템플릿(Search Templates)BackEnd/Elasticsearch 2021. 10. 12. 17:10
검색 템플릿(Search Templates)는 엘라스틱서치 1.1 버전에 추가된 오래된 기능입니다. 복잡한 검색 로직을 템플릿으로 저장하고 활용할 수 있기 때문에 매우 유용합니다. 검색 템플릿의 필드명과 파라미터를 사용해서 쿼리를 전송하고 템플릿에 제공한 파라미터로 실제 검색이 이루어 집니다. 검색 템플릿을 사용하면 클라이언트 코드가 단순해지며, 검색의 요구사항이 변경될 때 클라이언트 프로그램을 수정배포 하는 것이 아니라 엘라스틱서치에 저장되어 있는 템플릿의 기존 쿼리를 수정하고 새 쿼리를 작성할 수 있다는 이점이 있습니다. 검색 템플릿은 Mustache라는 템플릿 엔진을 사용해서 표현됩니다. # movieNm 필드에 매칭된 데이터를 검색하는 쿼리가 수행되는 템플릿 생성 POST _scripts/movi..
-
16. 파이프라인 집계(Pipeline Aggregations)BackEnd/Elasticsearch 2021. 10. 9. 11:37
파이프라인 집계(Pipeline Aggregations)는 다른 집계와 달리 쿼리 조건에 부합하는 문서에 대해 집계를 수행하는 것이 아니라 다른 집계로 생성된 버킷을 참조해서 집계를 수행합니다. 부모(Parent), 형제(Sibling)라는 두 가지 유형이 있으며 집계를 수행할 때는 buckets_path 파라미터를 사용해 참조할 집계의 경로를 지정함으로써 체인 형식으로 집계 간의 연산이 이루어 집니다. # 집계 참조 방법 AGG_SEPARATOR = '>'; METRIC_SEPARATOR = '.'; AGG_NAME = ; METRIC = ; PATH = [ , ]* [ , ]; 1. 형제 집계(Sibling Aggregation) 동일 선상의 위치에서 수행되는 새 집계를 의미합니다. 즉, 기존 버킷에..