본문 바로가기

Elasticsearch4

Elasticsearch 기본 Elasticsearch란? 엘라스틱서치는 아파치 루씬(Apache Lucene) 기반의 오픈소스 검색 엔진으로 아파치 루씬이 가진 한계를 보완하기 위해 개발되었습니다. 엘라스틱서치는 루씬 엔진을 확장하고 관리하기 위해 Java 언어와 JVM을 활용합니다. 엘라스틱서치는 NoSQL 데이터베이스 중 하나로서, 기존의 관계형 데이터베이스(RDBMS)와는 다르게 엘라스틱서치는 JSON 형식의 문서(document)를 저장하며, 각 문서는 고유한 식별자와 그에 따른 데이터를 가집니다. 이러한 문서들은 인덱스(index)내에 저장되어 있으며, 이를 통해 빠른 검색 및 분석을 수행할 수 있습니다. 대량의 데이터를 빠르게 저장, 검색 및 분석할 수 있기 때문에 주로 로그 및 이벤트 데이터 저장, 웹 사이트 검색, 모.. 2023. 5. 17.
[Elasticsearch] 집계 쿼리 다음 예제들과 인덱스는 ELK stack이 구축되어 있다는 가정하에, 키바나에서 제공하는 샘플데이터를 이용합니다. 키바나 홈 -> Get started by adding integrations 엘라스틱서치에서 집계는 데이터를 그룹핑하고 통계값을 얻는 기능으로 SQL의 GROUP BY와 통계 함수를 포함하는 개념입니다. 이를테면 데이터를 날짜별로 묶거나 특정 카테고리별로 묶어 그룹별 통계를 내는 방식입니다. 집계가 중요한 이유는 키바나의 주 기능인 데이터 시각화와 대시보드는 대부분 집계 기능을 기반으로 동작하며, 집계를 제대로 이해할수록 키바나라는 툴을 더 잘 사용할 수 있습니다. 집계의 요청 / 응답 형태 집계를 위한 특별한 API가 제공되는 것은 아니며, search API의 요청 본문에 aggs 파라.. 2023. 4. 10.
[Elasticsearch] 검색 쿼리 다음 예제들과 인덱스는 ELK stack이 구축되어 있다는 가정하에, 키바나에서 제공하는 샘플데이터를 이용합니다. 키바나 홈 -> Get started by adding integrations 엘라스틱서치에서 쿼리를 사용하는 방법은 쿼리 스트링과 쿼리 DSL 두 가지가 있습니다. 쿼리 스트링은 한 줄 정도의 간단한 쿼리에 사용하고 쿼리 DSL은 한 줄에 넣기 힘든 복잡한 쿼리에 사용합니다. 먼저 쿼리를 작성하기 위해 엘라스틱 서치의 문자열에 대해 알아야 합니다. 5.x 버전부터 문자열 타입이 텍스트와 키워드 라는 두가지 타입으로 분리되었습니다. 텍스트 타입은 일반적으로 분석기에 의해 토큰으로 분리되고 역인덱싱을 합니다. 키워드 타입의 경우 문자열 전체가 하나의 용어로 인덱싱 됩니다. 자세한 내용은 아래 .. 2023. 4. 7.
[Elasticsearch] CRUD - 데이터 입력, 조회, 삭제, 수정 1. 입력 (PUT) 도큐먼트를 입력하는 경우, PUT 매소드를 사용합니다. mydoc 이라는 인덱스에 ID가 1인 도큐먼트를 입력하려면 아래와 같이 작성합니다. PUT mydoc/_doc/1 { "title":"안녕하세요", "message":"반갑습니다." } 이전에 ID가 1인 도큐먼트가 없다면 response상에서 result는 created를 반환합니다. 이때 다시 동일한 입력을 한다면 ID가 1에 해당하는 도큐먼트가 mydoc인덱스에 존재하기 때문에 response상에서 result는 updated를 반환하고 덮어쓰기 됩니다. 덮어쓰기를 방지하기위해 _doc 대신 _create를 사용해야 합니다. PUT mydoc/_create/1 { "title":"안녕하세요", "message":"반갑습니.. 2023. 3. 27.