- 분산형 검색 엔진이다.
- 대규모 데이터의 검색과 분석을 실시간으로 빠르게 처리하는 데 특화된 오픈 소스 소프트웨어이다.
- 로그 검색, 데이터 분석, 텍스트 기반 검색 및 실시간 검색이 필요한 어플리케이션에서 많이 사용된다.
ElasticSearch는 분산형 시스템이다.
- 데이터가 하나의 서버가 아닌 여러 서버에 분산되어 저장되고 검색이 이루어지며, 따라서 데이터 용량이 커져도 성능 저하 없이 수평 확장이 가능하다.
- 분산 인덱싱 및 검색을 통해 많은 양의 데이터를 실시간으로 처리할 수 있다.
Elasticsearch을 통해 즉시 검색할 수 있는 기능 구현이 가능하다.
- 데이터가 ElasticSearch에 인덱싱되면 거의 즉시 검색할 수 있는 상태로 변환된다.
- 일반적인 관계형 DB의 경우 검색 엔진에 비해 검색 처리 속도가 상대적으로 느릴 수 있지만, ElasticSearch는 성능 저하 없이 실시간 검색이 가능하다.
Elasticsearch는 역 인덱스 방식을 사용한다. (Inverted index)
- ElasticSearch는 문서 지향 데이터 저장소로, 전체 텍스트를 빠르게 검색할 수 있는 역 인덱스 방식을 사용한다.
- 따라서 쿼리문의 LIKE '%단어%' 로 문서 검색을 할 보다 훨씬 빠른 속도로 키워드 검색을 할 수 있다.
Elasticsearch을 통해 텍스트 검색 뿐만 아니라 구조화된 데이터에 대해서도 복잡한 검색, 집계, 분석 드의 작업을 할 수 있다.
ElasticSearch 는 RESTful API를 사용하여 외부 어플리케이션과 쉽게 통신할 수 있다.
- Elasticsearch는 RESTful API를 사용하여 외부 어플리케이션과 쉽게 통신할 수 있다.
- HTTP를 통해 JSON 포멧으로 데이터를 주고받을 수 있어, 다양한 플랫폼과의 통합이 용이하다.
Elasticsearch는 데이터 분석 기능을 갖고 있다.
- 복잡한 검색 뿐만 아니라, 데이터를 통계적으로 분석하 수 있다.
- 예를 들어, 로그 파일에서 특정 패턴을 찾아내거나 특정 날짜 범위 내의 데이터를 집계하는 것이 가능하다.
서버의 로그 데이터를 실시간으로 수집하고, 문제를 추적하는 데 활용된다.
- 로그 수집, 겁색, 시각화 하는 데 용이하다.
자동완성, 맞춤법 교정, 필터링 등의 교급 검색 기능을 쉽게 구현할 수 있기 때문에 유용한 검색 기능을 지원할 수 있다.
소셜 미디어 콘텐츠에서 키워드 기능 검색, 우사성 검색 등을 통해 관련 콘텐츠를 빠르게 찾을 수 있다.
대용량의 로그 데이터를 실시간으로 분석하여 즉각적인 패턴 분석, 예측 분석, 경고 시스템 등을 구현할 수 있다.
Elasticsearch는 다양한 컴포넌트로 구성된다.
클러스터는 여러 개의 노드로 이루어진 집합이다.
데이터를 저장하고 검색하는 기능을 분담하는 역할 을 한다.
- 클러스터를 구성하는 각 노드는 실제로 데이터 저장, 검색 등의 작업을 수행한다.
- Elasticsearch는 클러스터 기반 시스템이라 수평 확장이 가능하다. (필요한 만큼 노드를 추가하여 성능 확장이 가능하다. )
노드는 Elasticsearch의 각 인스턴스를 말한다.
Elasticsearch에서 실행되는 개별 서버이다.
각 노드는 클러스터 내에서 역할을 분담하여 데이터 저장과 검색을 처리한다.
- 마스터 노드: 클러스터의 상태를 관리한다. 새로운 노드가 클러스터에 조인하거나 분리될 떄 이를 조정한다. 인덱스의 생성 및 삭제를 관리한다.
- 데이터 노드: 데이터를 실제로 저장하고, 검색 쿼리에 대한 처리와 분산을 담당한다.
- 클라이언트 노드: 클라이언트 요청을 받으며, 요청을 클러스트 내 다른 노드로 전달하거나 검색 결과를 집계한다.
인덱스는 Elasticsearch에서 데이터를 논리적으로 분류하고 저장하는 단위이다. 전통적인 관계형 데이터베이스의 테이블에 해당한다.
인덱스 내 데이터를 분할하고, 분산 저장하는 최소 단위이다.
하나의 인덱스는 여러 샤드로 분할되며, 샤드는 여러 노드에 분배되어 저장된다.
- 샤드를 통해 대용량 데이터를 분할하여 여러 노드에 분산함으로써 성능과 확장성을 높일 수 있다.
- 분산 환경에서 데이터에 대한 접근을 효율적으로 처리할 수 있게 해준다.
- 인덱스를 생성할 떄 샤드 수를 정의하며, 이 값은 이후 변경될 수 없다. 일반적으로 적절한 샤드 수는 데이터의 양과 노드의 수에 따라 결정된다.
도큐먼트는 Elasticsearch에서 저장되는 기본 데이터 단위이다.
보통 JSON 형식으로 데이터를 저장한다.