API/ElasticSearch
[Elastic]. elastic search Docker Setup
설치 정보 Verson 8.4.2 Single Node Setting localhost 에 설치 네트워크 생성 docker network create elastic 도커 이미지 다운로드 & 도커 런 docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -t docker.elastic.co/elasticsearch/elasticsearch:8.4.2 패스워드 재설정 docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic 패스워드 메모 : Gz-YD7e0hGc*5NsMRjvj 인증서파일 복사 docker cp es-node01:..
[ElasticSearch]. 엘라스틱서치 밋업(MeetUp) 참가
며칠 전 한국 엘라스틱 서치 그룹에서 진행하는 밋업에 다녀왔다. 사실 밋업 행사는 처음이라 어떻게 진행될까 궁금했고, 엘라스틱서치는 혼자서 독학으로 배운 서비스라 같은 처지에 놓인 사람들을 만나보고 싶어서 방문했다. 행사 내용은 엘라스틱서치를 잘 사용하고 있는 기업에서 발표주제를 정해 발표하는 세션이 있었고 자연어처리 주제는 아니었지만 흥미로웠다. 일단 내가 사용하면서 개선해야겠다고 마음만 먹었던 부분들을 그냥 넘어갔는데 발표 하신분께서는 집요하게 파고들어 찾아내셨다. 엘라스틱 서치 검색 쿼리가 복잡해질수록 알아보기 어려운데 RDBMS의 ORM 처럼 사용할 순 없을까? 고민만 하고 바빠서 그냥 넘어갔던 게 쉽게 얻어갈 수 있었다. 내가 알아보려고 했으면 적어도 이틀은 걸렸을 것이다. 밋업에서 얻어가는 것..
[ElasticSearch]. 한국어 형태소 분석기 nori_analyzer 사용하기
엘라스틱 서치에서 사용하는 토크나이저를 파이썬 클라이언트로 연동해서 사용할 수 있다. 굳이 엘라스틱서치에서 작동되는걸 파이썬으로 가져와서 연동해야할 필요가 있을까 하지만 검색 결과로 나오는 BM25 score 말고 분리된 형태소 간 유사도를 파악하기 위해 사용했다. *(0~1)로 치환되는 값이 필요함. Mapping 정보 "analysis": { "analyzer": { "nori_token_analyzer": { "type": "custom", "tokenizer": "nori_base_tokenizer" } }, "tokenizer": { "nori_base_tokenizer": { "type": "nori_tokenizer", "decompound_mode": "mixed", "discard_pun..
[ElasticSearch]. 다중 검색 종류 비교 : 비동기 검색(async_search) VS 멀티 서치(msearch)
ElasticSearch 서비스를 개발하는 과정에 있어서 여러 개의 쿼리를 필연적으로 한번에 날려야하는 순간이 있다. 우리 서비스도 동시에 3개의 쿼리를 날려서 결과를 취합하는 과정이 있는데. 처음(비동기 프로그래밍을 모를때)에는 그냥 3개의 쿼리를 순차적으로 날려서 결과값을 받았고 이 과정에서 많은 시간적 비용이 소모되었다. 이번 포스팅에서는 쿼리 여러개를 효과적으로 처리하는 방법 2가지를 소개하고 성능을 비교해보고자한다. Async Search : 비동기 검색 비동기 검색은 엘라스틱서치 쿼리를 비동기로 처리하는 방법이다. 쿼리 3개의 요청을 동시(Concurrency)에 날리고 응답이 빠른 것 부터 받아서 처리하는 방법. 3개의 쿼리중 가장 느린 검색속도가 최종 검색속도라고 볼 수 있다. from e..
[ElasticSearch]. 크론탭(crontab)으로 리눅스 서버 꺼지면 자동 재실행 하기
나는 현재 엘라스틱 서치 8.1.2 버전을 사용중이고 3개의 클라우드 서버(AWS EC2)를 바인딩하여 사용중이다. elasticsearch node 1 : 4GB , 2cpu t3.medium elasticsearch node 2 : 2GB , 2cpu t3.small elasticsearch node 3 : 2GB , 2cpu t3.small 문제 발생 : - 상대적으로 저 스펙인 (노드2) 와 (노드3) 서버가 자주 꺼지는 문제 발생 문제를 해결하기 위해 elasticsearch.log 를 살펴보았지만 원인을 찾기 어려웠다.. 계속 디버깅중... 그래서 임시방편이기도 하면서 제일 간단한 방법인 죽으면 자동으로 다시 실행시키는 방법을 적용해보기로했다. 리눅스에는 크론탭(crontab)이라고해서 자동으..
[ElasticSearch] SSL/TLS security https setting 외부에서 접속하기( version 8.x)
엘라스틱 서치가 8.0 버전을 기점으로 보안셋팅이 기본으로 설정되어있다. 음.. 보안이란것은 나에게 엄청 멀게만 느껴졌었는데 서비스를 하려면 기본적으로 https 통신을 해야 고객(user)들의 데이터들이 통신할때 암호화 하기때문에 안전하게 통신할 수 있다. https://opentutorials.org/course/228/4894 HTTPS와 SSL 인증서 - 생활코딩 HTTPS VS HTTP HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이 opentutorials.org 보안의 대한 ..
[elasticSearch] 엘라스틱 서치 클라우드 배포 &셋팅하기
elasticsearch cloud service deployment and setting 1. 이메일 회원가입 - 이메일로 회원가입하면 14일동안 괜찮은 스펙의 클라우드 서비스 무료로 이용할 수 있다. 2. 배포하기 Create deployment 클릭 기본적으로 GCP로 설정이 되어있다. 배포할 서비스의 이름을 입력해주고 Edit settings 를 클릭하면 설정을 다르게 할 수 있다. * 어떤 클라우드 플랫폼(GCP,AWS,Azure)을 기초로 하느냐에 따라 요금의 조금차이가 있음 서비스의 맞게 셋팅해줘야함. 하단에 한시간 요금 / 한달요금을 확인하면서 셋팅할 수 있음. 3. Advanced settings 엘라스틱서치 셋팅 Advanced settings 에서 여러가지 스펙을 선택하여 셋업을 진행..
[ElasticSearch]. 개발하면서 발견한 특징들
1.document id 는 index(순서)의 기능을 할 수 없다. 엘라스틱 서치는 하나의 row를 document(줄여서 doc)로 명칭하는데. document의 필수 파라미터인 id 는 RDBMS 처럼 자동으로 auto increment 해주는 기능이없다. 보통 문자열의 형식으로 숫자가 들어가는데 숫자가 아니여도 상관없다.(필수가 아닌 선택사항임) 차례대로 검색하는 것이 아닌 역 인덱싱 방식이라 필요가 없어서 그런게 아닐까 싶다. 2. 이미 있는 id에 다른 데이터를 넣으면(PUT) 덮어씌운다. 이미 해당하는 id 값에 데이터가 있다면 에러를 발생시키거나 어떤 처리를 할지 묻는게 보통인데. 그냥 데이터를 덮어씌워버린다. 3. 데이터를 추가할때 append 기능(맨 뒤에 추가)이 없다. 에초에 데이터..
[ElasticSearch]. 엘라스틱 서치 서버 셋팅하기
서버 셋팅 환경 : Linux(Centos) Wget 설치 : sudo yum install wget 엘라스틱 서치 다운로드 : wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-linux-x86_64.tar.gz 키바나 다운로드 : wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.2-linux-x86_64.tar.gz * 엘라스틱 서치와 키바나는 같은 버전이여야함. 압축해제 : tar xfz elasticsearch-7.15.2-linux-x86_64.tar.gz 이름 변경 : mv elasticsearch-7.15.2 /es-715 mv kiban..