오늘 뭐했냐/개발에 대한 주저리

23.09.10 엘라스틱서치(Elasticsearch)

스스로에게 2023. 9. 14. 00:05

엘라스틱서치

 실시간 분산 검색 엔진이다. 이는 주로 로깅 및 로그 분석, 실시간 데이터 분석, 검색 엔진 등 다양한 용도로 사용된다. 엘라스틱서치는 JSON 기반의 RESTful API를 제공하며, 다양한 프로그래밍 언어에서 쉽게 접근할 수 있다. 이는 또한 Apache Lucene을 기반으로 하고 있어, 텍스트 검색에 매우 뛰어난 성능을 보인다.

주요 특징

  1. 분산 처리: 데이터를 여러 노드에 분산해서 저장하고, 병렬 처리를 통해 빠른 검색과 집계를 제공.
  2. 확장성: 작은 규모의 단일 머신부터 수백 대의 서버까지 확장이 가능.
  3. 실시간 분석: 거의 실시간으로 데이터 검색 및 분석이 가능.
  4. 다양한 데이터 타입 지원: 텍스트, 숫자, 지리 위치, 정렬된 데이터 등 다양한 타입의 검색을 지원.
  5. 고급 검색 기능: 다양한 유형의 쿼리를 지원하며, 복잡한 쿼리를 쉽게 만들 수 있음.

사용 케이스

  • 로그 분석: ELK 스택(Elasticsearch, Logstash, Kibana) 또는 EFK 스택(Elasticsearch, Fluentd, Kibana)을 이용한 로그 분석이 흔한 사용 사례이다.
  • 실시간 데이터 분석: 웹사이트나 앱의 사용자 행동, 시스템 모니터링 등 다양한 실시간 데이터 분석에 사용 된다.
  • 풀텍스트 검색: 웹사이트나 기업용 어플리케이션에서 고성능의 텍스트 검색 엔진으로 활용된다.
  • 데이터 시각화: Kibana와 같은 도구를 이용하여 데이터를 시각적으로 분석할 수 있다.

 

장점

  • 높은 확장성과 빠른 검색 속도
  • 다양한 쿼리 언어와 고급 검색 기능
  • 많은 플러그인과 커뮤니티 지원

 

단점

  • 복잡한 쿼리나 대규모 데이터에 대한 처리가 리소스를 많이 사용할 수 있다.
  • 초기 설정이나 최적화가 상대적으로 복잡할 수 있다.
  • 고급 기능을 사용하기 위해서는 상당한 학습 곡선이 있을 수 있다.

 

이번에 프로젝트에 검색기능을 추가했었다. 검색 기능을 단순히 시퀄라이즈를 이용해 쿼리문을 만들고 이것으로 조건에 맞는 텍스트를 찾기만 했다. 실제 서비스가 아니고 테스트용으로 여러 개의 데이터를 채우고 확인만 해본 것이라 속도가 느리다고  생각되지 않았지만 쌓인 데이터가 많고 이용자가 몰린다면 당연히 속도가 많이 느려졌을 것 같다. 그래서 검색 기능을 다음에 다시 만들게 된다면 이런 것을 알고 시도해보면서 알아두는 것도 좋을 것 같다.