[Elasticsearch] Custom Tokenizer 를 만들어 Elasticsearch 에 넣어보자 (+이론 설명)
·
인프라 기술/Elasticsearch
Elasticsearch 는 검색에 대한 요구사항을 해결하기에 도입하기에 굉장히 유용하며, 이제 백엔드 개발 분야에서는 거의 필수적으로 가져가야 하는 지식이라고 생각이 된다. Elasticsearch 를 활용함에 있어서 가장 큰 핵심은 Analyzer, Tokenizer 를 사용하는 것이다. 많은 개발자들이 공감하겠지만, 회사나 프로젝트 내부 도메인 기반으로 검색 기능을 만들려면 존재하는 tokenizer 들로는 어려운 경우가 많다. 검색 자체가 형태소 같은 단위가 아니라 해쉬태그나 연관 검색어 위주로 검색할 때, 도메인 특화되어 있으면 도메인에 특화되게끔 Tokenize 해주는건 Elasticsearch 에선 당연히 어렵기 때문이다. 이번 포스트에선 Custom Tokenizer 적용을 위해 이해가 ..
[Elasticsearch 기본] - 2. Search 쿼리와 활용 가능 기능들
·
인프라 기술/Elasticsearch
Elasticsearch 의 Search 쿼리 Elasticsearch 검색의 핵심 쿼리 3대장 Elasticsearch 에 analyzer 들을 정의하여 index 를 생성하는 것까지 살펴봤고, 이제는 elasticsearch의 꽃인 검색 쿼리에 대해서 살펴보자. 기본적으로 ES에게 특정 index 내 검색을 요청하는 쿼리는 다음과 같다 $ GET /{index_name}/_search 위와 같이 날리면 index 내의 모든 필드를 조회해준다. 기본 Pagination 이 적용되어 offset 0, limit 10 으로 적용된다. 하지만 우리는 쿼리 형태의 요청을 날릴 것이기 때문에, 다음 쿼리들에 대해서 알아둬야 한다. match 쿼리 ⭐원하는 내용이 포함된 모든 데이터를 조회하는, Analyzer..
[Elasticsearch 기본] - 1. 기본 개념, 동작 원리와 Analyzer
·
인프라 기술/Elasticsearch
Elastic Search 란 오픈 소스이며, Restful한 검색 및 분석 엔진, 확장 가능한 DB 저장소로, 쉽게 말해서 검색 / 데이터 분석에 최적화된 DB이다. 대표적인 활용 사례로는 우선 데이터 수집 및 분석에 사용된다. 로그와 같은 대규모 데이터를 수집 및 분석하는데 최적화되어 있고, ELK 스택이 통합적으로 사용된다. 또한 Elasticsearch 는 자체적인 검색 엔진을 가지고 있어 검색 최적화에도 굉장히 많이 사용된다. 뛰어난 검색 속도를 자랑하며, 오타와 동의어 등 일반적으로 개발자들에게 높은 난이도의 개발을 요구하는 부분을 해결해준다. 동작 방식 MySQL은 SQL 문으로 3306 포트에 있는 프로세스와 통신을 하는 것이며, Elasticsearch는 REST API 방식으로..
[음식 리뷰] 전라 광주 방문 식당 리뷰
·
일상/음식점 리뷰
1. 초돈 쉼표 맛: ⭐⭐⭐⭐☆서비스: ⭐⭐☆☆☆청결도: ⭐⭐⭐⭐☆주차: 근처에 주차, 여유로움대기: 100% 예약제, 예약이 좀 힘듦 한줄 평: 그냥 맛있는 돼지고기 집인데, 불향으로 승부를 본 집. 부드럽고 불향이 있어서 다르긴 하다고 느꼈다. 유튜브에서 화제 맛집이라 조금 덧 붙이자면, 손님들을 엄청 생각하는 느낌으로 마케팅이 더 잘 된 케이스라 생각하지만 사장님이 바빠서 그런지 교류도 없고, 사전 문의할 때나 매장 이용할 때 직원들 전체적으로 친절하다고 느껴지진 않음. 개인적으로 삼겹살은 먹어본 곳 중에선 제일 맛있긴 하지만, 목살은 청주 나릿집이 압도. 영화관, 게임방 이용도 장점 https://naver.me/xY4Ld8aN 네이버 지도초돈 쉼표map.naver.com 2. 대금육회 ..
[Spring] @Transactional 내에서 Exception 처리 범위에 대하여
·
Spring/Spring 기본
회사에서 운영중인 프로젝트에서 저장되지 않도록 저장한 로직에서 저장이 진행되어 추후 요청에 오류가 발생하는 모습이 확인이 되었다. 살펴보니 Checked Exception 을 누수한 상황에서 Entity 정보가 저장이 되지 않을 것을 기대해서 발생한 오류였다. 체크 예외도 Transactional 범위 안에서 발생시 당연히 롤백할 것이라 생각한 내 잘못이였다. 검색을 통해 알아보니 @Transactional 범위와 Exception 종류 및 처리 방식에 대한 DB 반영 여부는 Case 별로 다양하기 때문에 확실히 이해해두고, 기억이 안날때마다 봐야할 필요성을 느꼈다. Case ACase BCase C1번체크 예외 누수언체크 예외 누수언체크 예외 잡기2번 (체크 예외)자식 예외 누수, 부모 누수자식 ..
[Java Multi-Threading] 생산자 소비자 Queue 예제 연습해보기
·
Java
멀티 스레드 개발에 익숙해지는데 실전적인 상황에 대한 연습은 해보면 해볼 수록 도움이 된다. 실제로 메인 스레드에서 분리해서 비동기 작업을 하는 경우에 멀티 스레드를 활용해서 작업을 실행하는 경우는 많이 사용된다. 실제 개발 과제로 만날 법한 상황에 대한 시나리오를 한 번 마련해보고 이를 예제로 풀어보자. 문제 시작 멀티 스레드로 로그를 처리하는 시스템을 만든다고 하자. 여러 서비스로부터 로그를 앱이 수신하고, 모으다가 디스크에 일괄 저장하는 앱이다. 다음과 같은 요구사항들을 가져가보자. 여러 서비스들이 스레드로 로그 메세지를 생성해서 전달한다로그 메세지는 메세지 큐에 쌓이다가, 디스크에 저장을 처리하는 또다른 Writer 스레드로 인해 처리된다Writer 스레드는 큐에서 하나씩 꺼낸다, 이 때,..
[iSCSI] iSCSI 프로토콜을 통해 SAN 아키텍처 이해해보기
·
CS 이론/Storage
SAN 아키텍처 컴퓨터 과학의 초창기에는 용량이 부족하면, 다른 컴퓨터에서 빼오든 새로 마련하든 물리적인 저장공간을 마련해서 추가해 주었다. 이런 "물리적"인 측면에서 처음으로 벗어나게 해준 기술이 SAN 아키텍처 기술이다. SAN 아키텍처는 SAN 스위치 허브를 주심으로 스토리지들과 사용 PC 들을 연결해주는 구조를 말하며, 네트워크를 통해 PC에서 스토리지에 접속하는 개념이다. 오늘날 Block Storage 클라우드 서비스의 근간이 되는 구조가 바로 SAN 아키텍처이며, 대표적인 프로토콜로는 FC, iSCSI, iSER 이 있다. FC 는 Fibre Channel 로, 광케이블을 사용하는 통신 프로토콜을 말한다. 광케이블은 빛을 통해 데이터를 전달하기 때문에 전송 속도와 지연 시간이 비교할..
[NFS] NFS 프로토콜을 통해 NAS 아키텍처 이해해보기
·
CS 이론/Storage
NAS 아키텍처 NAS 아키텍처는 Storage 개념이 강화되면서, 업무 문서 및 주요 자료들에 대한 공유 및 동시 수정을 지원하기 위해 시작된 아키텍처이다. 일반 Storage 들은 블록이나 Record 단위로 파일들이 기록되지만, NAS에서 데이터를 저장하고 사용하는 단위는 "파일"이다 (파일이란, 관련 데이터들을 묶어놓고 이름을 붙여놓은 논리적 단위이다). NAS 의 강점은 쉬운 환경 조성에 있다. FC를 사용하는 SAN 과는 다소 다르게, 이더넷 허브를 기반으로 형성되기 때문에 지금 사용하고있는 LAN 환경에서 NFS 서버 / 클라이언트 프로그램만 있으면 간단하게 조성할 수 있고, PC에서 NFS 서버에 접근할 수 있다. 하지만 TCP/IP 기반이며 파일 단위로 제어하기 때문에 낮은 thro..
[음식 리뷰] 제주 방문한 식당들 초간단 리뷰
·
일상/음식점 리뷰
1. 제주 올래국수 본점 맛: ⭐⭐☆☆☆서비스: ⭐⭐☆☆☆청결도: ⭐⭐⭐☆☆주차: 갓길에 주차대기: 아침 9시 기준 없음 한줄 평: 잔치국수에 다른거 다 빼고 고기를 많이 넣어주었다 https://naver.me/xHg0zpfk 네이버 지도올래국수 본점map.naver.com 2. 온정메밀 흑돼지돈까스 맛: ⭐⭐☆☆☆서비스: ⭐⭐☆☆☆청결도: ⭐⭐⭐☆☆주차: 갓길에 주차대기: 14시 기준 없음한줄 평: 돈까스 괜찮다, 치즈는 살짝 안어울리는 치즈 사용, 카레는 평범 https://naver.me/5xjVruin 네이버 지도온정메밀 흑돼지돈까스map.naver.com3. 하나로마트 성산일출봉농협 수산회 맛: ⭐⭐⭐☆☆한줄 평: 제주도 농협 하나로마트의 회들은 다 괜찮은 것 같다. 도다..
[실전 Java 고급 1편] - 6. Executor Framework 에 대하여 2
·
Java
Thread Pool 과 Executor Framework 2 1. 우아한 종료 우아한 종료 (graceful shutdown) 자체는 SW에서 매우 중요한 개념이다. "기존에 진행중이던 작업을 완료한 이후 문제 없이 안정적으로 SW를 종료"하는 것을 말한다. 가령, 서버가 재기동되어야 할 때, 현재 처리중이던 요청이 있다면 마무리하고 종료해야 하는 것을 말한다. void shoutdown()새로운 작업을 받지 않고, 제출된 작업을 모두 완료한 후 종료한다. Non-Blocking 함수우리가 사용하던 close() 와 동일하다고 보면 된다. (24시간 뒤에 안되면 shutdownNow() 호출)List shutdownNow()긴급 중단. 실행 중인 작업들을 중단하고 대기중인 작업들은 반환된다. No..