본문 바로가기

컴퓨터/DB

(4)
ElasticSearch 인덱스에 동의어 사전 적용하기 동의어 적용은 검색에 있어 사용자에게 wow 및 ai를 활용하는 듯한 느낌을 줄 수 있다. 동의어 적용 자체는 mysql로도 어찌어찌 적용해본 경험은 있으나, DB에 쓸데없는 부하가 있어 ES에 직접 사전을 넣어 동의어 적용을 하는 것이 가장 좋다고 느껴진다. 예를 들어 생로랑과 입생로랑의 경우, 생로랑이 공식단어라 그것만 있을 경우 입생로랑을 검색했을때 생로랑이 뜨지 않을 것이다.(만약 반대조건이라면 생로랑이 입생로랑에 포함되어 상황에 따라 좀더 검색확률이 올라갔을 것이다) 현재 나는 AWS의 ElasticSearch Service를 통해 ES를 쓰고 있으므로 이를 기준으로 작성할 것이다. (ver 6.8) 예시 사전은 다음과 같다. dict.txt 생로랑, 입생로랑 구찌, 구지, 구띠 사전이라고 해서..
ElasticSearch - index Alias를 활용한 유연한 인덱스 운영 ElasticSearch(이하 ES)를 사용하다 보면 운영 중인 index를 수정할 일이 생긴다. (mapping이나 setting 등) 그런데 ES는 MySQL과 달리 인덱스의 메타데이터를 수정하기가 쉽지 않다. (ES의 데이터 불변성이 인덱스에도 적용되는 느낌이다) 그래서 나는 보통 새로운 인덱스를 생성해 reindex를 해주는 방식을 사용했는데, 이 때 index의 크기가 클 경우 reindex의 시간이 길어 그 동안 해당 index를 사용할 수 없는 문제가 생긴다. 실제 운영 중인 서비스의 경우 이 문제가 상당히 크게 다가오는데, 이 때 유용하게 사용될 수 있는 것이 ES에서 제공하는 Alias 기능이다. Alias는 어떤 인덱스의 별칭을 정해두고, ES에 요청이 올 때 인덱스명이 별칭인 요청이 ..
MySQL show processlist - mysql에서 현재 실행중인 쿼리의 프로세스들을 볼 수 있음. RDS 재부팅이 AWS Console에서 가능하니 참고.
ElasticSearch document update 방법 //review index의 contents라는 type을 가진, 10188 라는 id를 가진 document의 goodsno를 1234567로 수정하라 index/type/id POST review/contents/10188/_update { "doc": { "goodsno" : "1234567" }}