-
Spring Solr Client 구현 (Solrj)IT/Spring 2023. 1. 3. 15:44반응형
참고 문서:
Spring Data Solr: https://docs.spring.io/spring-data/solr/docs/4.3.x/reference/html/#reference
Apache Solr: https://solr.apache.org/guide/8_0/client-apis.html
1. gradle dependencies 추가
[ spring-boot-starter-data-solr 2.4.13 버전 설치 시 사용되는 Dependencies ]
- spring-data-solr: 4.3.15 (https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-solr/2.4.13)
- solr-solrj: 8.5.2 (https://mvnrepository.com/artifact/org.springframework.data/spring-data-solr/4.3.15)
implementation 'org.springframework.boot:spring-boot-starter:2.4.13' developmentOnly 'org.springframework.boot:spring-boot-devtools' implementation 'org.springframework.boot:spring-boot-starter-data-solr:2.4.13'
2. application-dev.yml 및 application.yml 수정
# Solr Server URL 작성 # URL에 Core 까지 입력할 경우 다른 Core에 접근이 불가하다. # 필자는 Solr 까지만 접근 후 호출 할 때마다 Core를 선택하여 호출했다. spring.data.solr: host: "my Solr URL"
3. SolrConfig 구현
@Configuration @ConfigurationProperties(prefix="spring.data.solr") @EnableSolrRepositories(basePackages = "my repository package") @Slf4j public class SolrConfig { @Value("${spring.data.solr.host}") private String solrHost; @Bean public SolrClient solrClient() { log.info("solrHostURL ={}", solrHost); return new HttpSolrClient.Builder(solrHost).build(); } @Bean public SolrTemplate solrTemplate(SolrClient client) throws Exception { return new SolrTemplate(client); } }
4. Doc (VO) 구현
- Solr 공식에는 Document 라고 표시하지만, 필자는 VO와 동일한 역활을 한다고 생각하며 개발을 진행했다.
- Collection 에서 Core를 정할 수 있다.
- Solr Field와 동일하게 작성한다.
@SolrDocument(collection = "coreName") @Getter @Setter public class SolrVO { @Id @Indexed private String id; @Field("name") private String name; @Field("Phone_Number") private String phoneNumber; @Field("Adderss") private String address; .... ... }
5. Repository 구현
- SolrCrudRepository를 상속받아 작성한다.
- Query 예시들은 많으니 검색하거나 공식 문서를 확인하면 된다.
- 현재 Query는 모든 데이터를 조회한다.
public interface SolrRepo extends SolrCrudRepository<SolrVO, String> { @Query("*:*") List<SolrVO> getAllMembers(); }
6. Svc 구현
@Service @Slf4j public class SolrSvc { @Resource private SolrRepo solrRepo; public List<SolrVO> getAllMembers() { return solrRepo.getAllMemebers(); } }
정리
생각보다 Document를 보면서 많이 해맸다.
SolrClient와 SolrTemplate 역활은 무엇인지 어떻게 다른지 등 기본 적인 내용들은 찾는데 시간이 많이 소요됬다.
또한 구현 하는 방법이 너무 다양하다.
이 글에서는 가장 간단한 Repository를 구현하여 사용했지만,
SolrQuery 객체를 이용하여 Repository 없이 직접 구현할 수 있다.
조금 더 유연한 개발을 하기 위해서는 직접 구현을 하는 것이 더 적합하다.
다음에는 직접 구현하는 내용을 정리해서 포스팅 해야겠다.
반응형'IT > Spring' 카테고리의 다른 글
Spring - Ajax (비동기) 통신 ( 로그인 기능 및 List 출력 ) (3) 2020.05.08 Spring - Amazon RDS DB 연동 및 확인 (Insert, Select) (4) 2020.05.04 Spring - 웹 프로젝트 생성 (0) 2020.04.28 댓글