DevOps/Elastic Stack 썸네일형 리스트형 [Logstash] Logstash를 활용한 PostgreSQL 데이터 Elasticsearch에 Bulk Insert 작업 설정 - 컴도리돌이 운영 환경에서 PostgreSQL 데이터를 Elasticsearch로 전송하는 과정에서 Bulk Insert 작업이 어떻게 이루어지는지 궁금할 때가 있습니다. 데이터는 정상적으로 조회되지만 정작 인스턴스 내부에서는 명확한 실행 스크립트나 배치 파일이 보이지 않더라고요.🤔이러한 경우, 데이터가 어떤 방식으로 처리되는지 파악하는 것이 중요하기 때문에 이번 기회에 로그스태시에서 기존 DB에 있는 데이터를 Elasticsearch에 대량 추가하는 방법을 알아보려고 합니다. 우선, /etc/logstach/conf.d/ 디렉터리를 확인하는 것이 가장 먼저 해야 할 일입니다. 로그스태시는 데이터를 수집하고 변환한 후 Elasticsearch로 전달하는 역할을 합니다. 이 디렉터리 내 .conf 파일을 살펴보면,.. 더보기 [Elasticsearch] Elasticsearch를 활용한 특정 행정구역 내 데이터 집계하기 (feat. java) - 컴도리돌이 [PostgreSQL] PostGIS 설치 및 사용 - 컴도리돌이주어진 좌표가 어떤 행정구역에 포함되는지 알아야 하는 상황이 생겼습니다. 여러 방법이 있지만 그중에서 PostgreSQL에 있는 확장 라이브러리인 PostGIS가 속도 및 정확성에 성능이 매우 뛰어난다comdolidol-i.tistory.com [PostgreSQL] PostGIS 성능 비교: GEOMETRY vs TEXT 저장 방식, 얼마나 차이 날까? - 컴도리돌이회사에서 PostGIS 도입을 고민하면서, 어떤 이슈가 발생할지 모르기 때문에 행정구역 경계 값을 TEXT로 처리하여 JSON 형태로 변환 후 Elasticsearch의 geo-bounding box query로 조회하는 방안을 계획했습니다comdolidol-i.tistory... 더보기 [Elasticsearch] Cardinality 집계, 유니크한 값의 수 - 컴도리돌이 SQL에서 데이터를 집계할 때, GROUP BY 구문을 자주 사용하여 특정 필드에 대해 유니크한 값의 수나 그룹별 집계를 수행합니다. 예를 들어, 특정 칼럼의 유니크한 값을 계산하거나, 고유한 사용자 수를 구하는 등의 작업을 쉽게 처리할 수 있습니다. 하지만 Elasticsearch에서 이러한 작업을 어떻게 처리할까요? Elasticsearch는 분산형 시스템으로, 데이터를 빠르게 검색하고 집계할 수 있는 강력한 기능을 제공하지만, SQL과는 다른 방식으로 데이터를 처리합니다. Elasticsearch에서 Cardinality 집계는 특정 필드의 유니크한 값의 수를 계산하는 집계 방식입니다. 예를 들어, 사용자가 방문한 사이트의 고유한 페이지 수를 계산하거나, 상품의 고유한 카테고리 수를 구하는 등 유.. 더보기 [Elasticsearch] Elasticsearch Highlight를 활용한 필드 매칭 이해하기 - 컴도리돌이(feat. java) - 컴도리돌이 Elasticsearch를 사용하다 보면, 하나의 키워드를 여러 필드에 매칭하여 검색해야 하는 경우가 있습니다. 보통 fields를 사용하여 여러 필드를 배열에 넣고, query 값에 검색어를 입력해 조회하곤 하죠. 예를 들어 아래와 같은 쿼리를 사용해 보신 적 있을 겁니다:{ "query": { "bool": { "must": [ { "multi_match": { "query": "경기도 성남시 분당구", "fields": ["addr", "jibun", "road"] } } ] } }} 이 쿼리는 지정된 필드들 중에서 키워드와 매칭되는 데이터를 찾아줍니다. 그런데 여기서 궁.. 더보기 [Elasticsearch] Elasticsearch 집계하기, 버킷 집계(Bucket Aggregation)과 메트릭 집계(Metric Aggregation) (Feat. Java) - 컴도리돌이 DB에서 집계를 처리할 때, SQL에서는 GROUP BY문을 사용해 데이터를 그룹화하고, 각 그룹에 대해 집계 함수 (COUNT, AVG, SUM 등)을 적용합니다. 이는 매우 직관적이고 유용하지만, 대용량 데이터에서 효율적인 집계를 위한 최적화가 필요한 경우가 많습니다. 그렇다면 Elasticsearch에서는 어떻게 집계를 할까요? 🤔 Elasticsearch는 검색 엔진이라 SQL처럼 전통적인 관계형 데이터베이스 방식의 집계 방식이 아닌, 분산 검색 시스템 특성을 반영한 집계 방식을 제공합니다. Elasticsearch의 집계는 데이터를 분석하고 요약하는 데 필요한 기능을 제공합니다. 이는 SQL의 GROUP BY와 유사하지만, Elasticsearch에서는 더 많은 기능과 유연성을 제공하여 대규.. 더보기 [Elasticsearch] 성능 향상을 위한 doc_values 사용법: 메모리 효율 향상시키기 - 컴도리돌이 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.comElasticsearch에서 성능을 최적화하는 것은 데이터 양이 많을수록 더욱 중요합니다. 보통 검색 속도에 집중하게 되지만, 메모리 사용 최적화 역시 시스템 성능에 큰 영향을 미쳐요. 이때 doc_values라는 기능이 등장하죠! 이 기능을 통해 메모리 사용을 절감하면서도 빠른 응답 속도를 확보할 수 있습니다. 😊근데 doc_values가 뭔데? 🤔doc_values는 필드 데이터를 메모리가 아닌 디스크에 저장하여 필요한 순간에만 참조할 수 있게 해주는 Elasticsearch의 기능입니다. 메모리 대신 디스크를 활용해 대량의 데이터를 효율적으로 다루게 하죠. 이를 통해 JVM 힙 .. 더보기 [Elasticsearch] 성능 개선을 위한 코드 비교 및 분석 - 컴도리돌이 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.comElasticsearch로 데이터 검색 속도를 높이는 일은 단순히 쿼리 작성만의 문제가 아니었어요. 때로는 작은 설정 하나하나 코드 스타일이 성능 차이를 만들기도 합니다.불필요한 필드 설정 피하기먼저, 많은 분들이 텍스트 데이터를 다룰 때 대부분의 필드를 text로 지정하는 실수를 합니다. 🤔 텍스트 필드가 많으면 리소스를 불필요하게 잡아먹습니다. 아래처럼 너무 많은 필드를 text로 설정하면 검색 속도가 느려질 수밖에 없어요. // 잘못된 인덱스 설정 예시 { "mappings": { "properties": { "title": { "type": "text" }, "content":.. 더보기 [Elasticsearch] wildcard 쿼리에 대해 제대로 이해하기 - 컴도리돌이 RDBMS를 사용하다가 Elasticsearch에서 쿼리를 작성하면서 wildcard를 사용한 쿼리의 결과가 제가 생각했던 것과 달라서, 해당 내용에 대해 충분히 이해하기 위해 글을 작성하려고 합니다. Wildcard query를 작성하면서 예상했던 결과는 RDBMS의 LIKE에서 사용했던 '%searchInput%'와 같은 형태가 가능할 것으로 기대했는데, 막상 확인되는 결과는 그렇지 않았습니다. 원본 텍스트는 "경기도 용인시 기흥구 중동 1100번지"와 같은 형태의 주소입니다. 제가 시도한 쿼리는 다음과 같았습니다.{ "query": { "bool": { "must": [ { "wildcard": { "address": { "value": "*경기도 기흥구*" } } } ] } } } 그런데 결과는 .. 더보기 이전 1 2 다음