index 5

[elasticsearch] 색인 -2

0. 개요오늘은 색인 중에서도 텍스트에 대해서 좀 더 자세하게 알아보도록 하겠습니다.보통 DB를 사용하면 Like 검색을 주로 하는데요. Like 검색은 테이블의 전체 row를 탐색하기 때문에 데이터가 많아지면 많아질수록 기하급수적으로 늘어나는 것을 겪어보셨을거에요.물론 mysql에서도 fulltext 검색을 위한 index가 존재합니다. 바로 ngram parser인데요. ngram parser는 https://seokhyun2.tistory.com/93 글에서 좀 더 자세하게 확인해보실 수 있습니다.ngram parser를 사용하더라도, 텍스트 검색에 한계를 느끼게 되면 검색엔진을 도입하게 되는 경우가 많습니다.그래서 오늘은 텍스트의 색인에 대해 좀 더 자세하게 알아보겠습니다.먼저 텍스트 검색에 대한..

ETC/Elasticsearch 2025.02.02

[elasticsearch] 색인 -1

0. 개요elasticsearch라는 검색엔진을 알아보고 있습니다.검색엔진에서 검색을 하려면 데이터를 일단 적재해야겠죠?elasticsearch에 데이터를 적재하는 작업을 색인이라고 합니다.오늘은 색인에 대해서 예시를 들어가면서 알아보도록 하겠습니다.elasticsearch에 연결해서 작업하는 방식은 여러가지가 있는데, 제일 간단한 rest API 호출 방식을 기준으로 알아보도록 하겠습니다.1. elasticsearch 실행elasticsearch는 우선 간단하게 아래 명령어로 docker를 활용하여 실습할 수 있도록 구성해보도록 하겠습니다.docker run -it -e xpack.security.enabled=false -e discovery.type=single-node -p 9200:9200 --..

ETC/Elasticsearch 2025.01.19

[elasticsearch] 데이터 저장

elasticsearch는 data storage로써, 데이터를 저장하는 것이 기본이며 저장된 데이터 중에 검색을 빠르게 할 수 있는 검색엔진입니다.오늘은 elasticsearch가 어떻게 데이터를 저장하는 지 알아보도록 하겠습니다. 우선 RDB를 사용하면, table과 column을 활용하여 데이터의 구조를 선언해서 사용하게 되어있습니다.elasticsearch는 유사하게 index와 field로 구성할 수 있습니다.각 field는 string, integer, boolean 등의 값을 저장할 수 있으며 검색 전략에 따라서 어떤 토크나이저를 사용할 지 설정할 수 있습니다.토크나이저는 추후에 좀 더 자세하게 따로 포스팅해보도록 하겠습니다. RDB와 elasticsearch를 비교해보면 아래의 표와 같이 ..

ETC/Elasticsearch 2024.10.27

[mysql] fulltext index ngram parser

개요 fulltext index에 대해서 정리를 한 번 했었는데(https://seokhyun2.tistory.com/92), fulltext index에서 토큰을 나누는 기본 방식은 띄어쓰기를 기준으로 분리를 합니다. 띄어쓰기를 기준으로만 분리를 하게 되면, 한국어에서는 조사가 다 붙어있어서 검색이 어렵습니다. 예를 들면 '한국'이란 명사에 대해서 '한국은', '한국에서', '한국의' 와 같이 조사가 붙어서 띄어쓰기로만 토큰을 나누게 되면 다 별도의 토큰으로 인식이 되어, '한국'이라는 명사가 있는 문장만 찾고 싶은데 찾을 수 없게 됩니다. 그래서 추가적으로 제공되는 기능이 바로 ngram parser입니다. 원리 ngram parser가 무엇인지, 원리를 알아볼텐데요. ngram에서 n은 숫자이고, ..

ETC/MySQL 2023.04.23

[mysql] fulltext index

개요 mysql 데이터베이스를 사용하다보면, 조회 속도 개선을 위한 작업을 많이 하게 됩니다. 그래서 index를 많이 사용하게 되는데, 기본적인 index는 column값이 정확하게 일치하는 기준으로 사용할 수 있습니다. column값이 텍스트를 활용하고, 값이 일부만 일치하는 경우 조회를 하기 위해서는 like 쿼리를 사용하는데, 그 속도가 매우 느립니다. 완전 동일한 조회가 아니라서 기본적인 index를 사용할 수도 없구요. 이럴 때, fulltext를 사용하면 조회 속도를 개선할 수 있습니다. 원리 fulltext index를 사용하는 방법을 알아보기 전에, 원리를 우선 간단하게 알아보겠습니다. column의 값이 영어 이름이라고 가정하고, '마이클 잭슨'과 '마이클 조던' 이라는 2개의 값이 존..

ETC/MySQL 2023.04.09