-
Notifications
You must be signed in to change notification settings - Fork 0
3. spring에서 어떻게 활용 ?
https://docs.spring.io/spring-data/elasticsearch/reference/index.html
TransportClient 대신 High Level REST Client를 사용할 것을 권장 (버전 업이 되면서 사용불가)
요청 객체를 인수로 받아들이고 응답 객체를 반환해 클라이언트 자체에서 처리하는 것이 주 목표
java object(도메인 엔티티)를 Elasticsearch와 뒷단에 저장된 json형식에 매핑하는 과정
Jackson 기반 변환을 사용하다가 Meta Model Object Mapping 방식을 도입
-> ES에서 읽기/쓰기 위해 도메인 타입 정보를 사용
-> 특정 도메인 타입 매칭 위해 converter 등록 가능
@Document : 데이터베이스에 매핑할 클래스임을 나타낸다. 클래스 레벨에 적용. 가장 중요한 속성은 다음과 같다.
indexName : 이 엔티티를 저장할 인덱스 이름
type : 매핑 유형. 설정되지 않은 경우 클래스의 소문자 이름이 사용된다. (버전 4.0 이후 사용 안 함)
shards : 인덱스에 대한 샤드 개수
replicas : 인덱스에 대한 복제본 개수
refreshIntervall : 인덱스의 refresh 실행 간격. 인덱스 생성에 사용됨. default= "1s"
indexStoreType : 인덱스의 인덱스 저장소 유형. 인덱스 생성에 사용됨. default= "fs"
createIndex : repository 부트스트래핑에 인덱스를 생성할지 여부 configuration. defalut= true
versionType : 버전 관리 configuration. default= EXTERNAL
@Id : ID 목적으로 사용되는 필드를 표시한다.
@Transient : 기본적으로 모든 필드는 저장 또는 검색 시 도큐먼트에 매핑되는데 이 주석이 포함된 필드는 제외된다.
@PersistenceConstructor : 데이터베이스에서 개체를 인스턴스화할 때 사용할 생성자(보호된 패키지도 포함). 생성자 argument는 검색된 문서의 키 값에 이름에 의해 매핑된다.
@Field : 필드의 속성을 정의. 대부분의 속성이 각 Elasticsearch Mapping 정의에 매핑된다.
name : Elasticsearch 문서에 나타낼 필드 이름. 설정되지 않은 경우 Java 필드 이름이 사용된다.
type : 필드 유형, Text, Keyword, Long, Integer, Short, Byte, Double, Float, Half_Float, Scaled_Float, Date,
Date_Nanos, Boolean, Binary, Integer_Range, Float_Range, Long_Range, Double_Range, Date_Range, Ip_Range, Object, Nested, Ip, TokenCount, Percolator, Flattened, Search_As_You_Type 중 하나일 수 있다.
Date 유형의 format 및 pattern 정의. Date 유형에 대해 format은 반드시 정의해야 한다.
store : 원래 필드 값이 Elasticsearch에 저장되야 하는지 판단하는 플래그, default= false.
커스텀 analyzer와 normalizer를 지정하여 커스텀마이징하는 analyzer, searchAnalyzer, Normalizer.
@GeoPoint: 필드가 geo_point 데이터 형식임을 표시한다. 만약 필드가 GeoPoint 클래스의 인스턴스인 경우 생략할 수 있다.
elasticsearch 색인에 대해 호출 가능한 연산을 정의하기 위해 인터페이스 사용
IndexOperations: 인덱스 생성 또는 삭제
DocumentOperations: ID에 따라 엔티티 저장, 업데이트, 검색 작업
SearchOperations: 쿼리 사용해 여러 엔티티 검색하는 작업
ElasticSearchOperations: DocumentOperations + SearchOperations
인터페이스를 통해 document를 검색하면 찾아진 엔티티만 반환하는데, SearchHit을 이용해 추가 정보를 포함 시켜 매핑
SearchHit는 다음의 정보를 포함한다.
Id, Score, Sort Values, Highlight fields, The retrieved entity of type
SearchHits는 다음의 정보를 포함한다.
Number of total hits, Total hits relation, Maximum score, A list of SearchHit objects, Returned aggregations, SearchPage, SearchHits 요소에 포함되며 레파지토리 메소드를 사용할 때 페이징 엑세스에 사용되는 spring data Page를 정의한다.
여러 쿼리 메소드를 지원하는데, native query 이용해볼 생각임
코드 구성 중인데 잘 안돼서.. 보여줄 게 있을 때 한번에 보여주겠음