인프런 커뮤니티 질문&답변
안녕하세요 질문 있습니다.
작성
·
52
0
안녕하세요 질문 있습니다.
스프링 부트에서는 엘라스틱 서치 라이브러리를 사용하지만 실제 서버는 오픈서치를 띄워서 사용 가능한지 궁금합니다.
답변 2
0
안녕하세요 ! 질문 너무 잘 해주셨어요 ~
질문해 주신 내용에 대해 답변드려볼게요 !
결론부터 말씀드리면, 스프링 부트에서 Elasticsearch 라이브러리를 사용하면서 실제 서버는 OpenSearch를 띄워서 사용하는 것은 가능하지만 주의가 필요해요 !
OpenSearch는 Elasticsearch를 개발한 회사가 2021년 1월 이후로 새로운 라이선스를 부과하면서 자유로운 활용이 금지되자, AWS가 이에 반발해 오픈 소스로 활용할 수 있었던 Elasticsearch 7.10.2 버전을 포크해서 만든 검색 엔진이에요 !
대부분의 기능은 비슷하지만 OpenSearch와 Elasticsearch는 엄연히 다른 소프트웨어이고, 시간이 흐르면서 버전이 업데이트됨에 따라 기능이나 사용법의 차이가 조금씩 생기게 됐어요 !
따라서 Spring Data Elasticsearch와 OpenSearch 조합으로 사용하실 경우, 기본적인 CRUD나 간단한 검색은 동작할 수 있지만 고급 기능에서 문제가 생길 수 있고, AWS OpenSearch에서는 nori 플러그인을 제공하지 않는 등의 차이도 있어요 !
그래서 OpenSearch를 사용하실 거라면 spring-data-opensearch 라이브러리를 사용하시는 것을 권장 드리고, Spring Data Elasticsearch를 사용하실 거라면 Elasticsearch 서버나 Elastic Cloud 사용을 권장드려요 :)
추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
안녕하세요 ! 질문 너무 잘 해주셨어요 !!
추가로 질문해 주신 내용에 대해 답변드려 볼게요~
1번 spring-data-opensearch는 Spring Data의 추상화 레이어를 제공하는 라이브러리예요!
JpaRepository처럼 인터페이스만 정의하면 기본 CRUD가 자동으로 구현되고
Spring 생태계와의 통합이 편리하지만,
복잡한 쿼리나 세밀한 제어가 필요할 때는 제약이 있을 수 있어요 !
반면 2번 opensearch-java는 OpenSearch의 공식 Java 클라이언트로,
Low-level API를 직접 활용할 수 있어서 훨씬 유연해요!
복잡한 쿼리, aggregation, 고급 검색 기능을 모두 활용할 수 있지만,
Spring Data처럼 자동화된 기능은 없어서 코드를 직접 더 많이 작성해야 하죠 !
말씀하신 것처럼 star 수도 많고 복잡한 쿼리를 사용할 수 있다는 점에서 2번도 좋은 선택이지만,
스프링 부트 프로젝트라면 spring-data-opensearch(1번)를 먼저 사용해보시는 걸 추천드려요!
생산성 면에서 훨씬 효율적이고,
@Query 어노테이션이나 OpenSearchOperations를 활용하면 복잡한 쿼리도 충분히 작성 가능해요 !
참고로 두 라이브러리를 함께 사용하는 것도 가능해요!
간단한 CRUD는 spring-data-opensearch로 처리하고,
복잡한 검색 쿼리는 opensearch-java 클라이언트로 처리하는 식으로 상황에 따라 적절히 조합해서 사용하실 수 있어요 :)
추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. 감바스님.
스프링 부트 프로젝트에서 Elasticsearch 클라이언트 라이브러리를 사용하면서, 실제 서버는 OpenSearch를 사용하는 것이 가능한지 궁금하시군요. 네, 가능합니다. OpenSearch는 Elasticsearch에서 포크한 프로젝트로, 호환성이 높은 편입니다. 따라서, 스프링 부트에서 사용하는 Elasticsearch 라이브러리는 대부분 OpenSearch 서버와 함께 작동할 수 있습니다.
주의사항 및 팁
버전 호환성 확인: OpenSearch와 Elasticsearch 간의 호환성을 보장하기 위해, 사용 중인 Elasticsearch 클라이언트 라이브러리의 버전과 OpenSearch의 버전이 호환되는지 확인해야 합니다.
기능 차이: OpenSearch와 최신 버전의 Elasticsearch 사이에 새로 추가된 기능 차이로 인해 일부 기능이 작동하지 않을 수 있습니다. 사용 중인 라이브러리의 문서를 확인하고 이에 대한 변화를 이해하는 것이 중요합니다.
테스트 환경: 실제 서버에 적용하기 전, 테스트 환경에서 OpenSearch를 사용하여 스프링 부트 애플리케이션과의 연동 테스트를 진행하는 것을 권장합니다.
유사한 주제를 다룬 질문이 있어 소개해드립니다:
이 자료를 참조하시면 더 많은 정보를 얻으실 수 있을 것입니다.
저는 질문자님의 이해를 돕기 위해 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





답변 감사합니다
추가로 OpenSearch를 사용할때 아래 2가지 라이브러리 중에 어떤 라이브러리를 사용할지 고민이 되서 질문 드립니다.
spring-data-opensearch 경우에는 JpaRepository처럼 인터페이스를 구현해서 간편하게 CRUD 기능 사용이 가능해 보이는데 복잡한 쿼리 사용이 가능한지는 모르겠습니다. 그래서 찾아봤을때 좀 더 복잡한 쿼리 사용이 가능해 보이고 star 수도 더 많아서 더 많이 사용하는거 같은 2번 라이브러리를 사용하는게 어떨지 궁금합니다.
https://github.com/opensearch-project/spring-data-opensearch
https://github.com/opensearch-project/OpenSearch