만쥬의 개발일기
[docker] - dockerfile 문법과 작성법 : CMD vs ENTRYPOINT
🛠️TOOL/🐳Docker 2024. 5. 31. 15:54

도커파일은 도커로 이미지를 생성하기 위한 용도로 작성하는 스크립트 파일이다.도커 이미지를 빌드할 때는 전적으로 도커 파일에 의존해 빌드를 실시한다.도커 스크립트는 크게 어렵지 않지만 헷갈리는 것들이 있어 한 번 정리해두면 좋다.예시로 알아보는 명령어들도커파일 예시와 함께 각 명령어 사용법을 알아보자.# 베이스 이미지로부터 시작FROM python:3.9-slim# 작업 디렉토리 설정WORKDIR /app# 환경 변수 설정ENV FLASK_APP=app.pyENV FLASK_RUN_HOST=0.0.0.0# 라벨 설정LABEL maintainer="example@example.com"LABEL version="1.0"LABEL description="This is a sample Dockerfile."# 로..

[Elasticsearch / Seminar] - GenAI Workshop 후기

🚀개요 이번 포스팅에서는 4월 3일 엘라스틱 코리아에서 파트너사를 대상으로 진행한 세미나에 참여하게 되어 다녀온 후기와 배웠던 내용들을 간략하게 남기고자 합니다 🖐️ 세미나는 시청에 위치한 에티버스 타워에서 진행되었습니다. 덕분에 오랜만에 숭례문도 보고 왔습니다 ㅎㅎ 뒤쪽으로 SK의 그린빌딩도 보이네요 세미나는 오후 2시 ~ 오후6시까지 진행되었고, 약 70명 이상의 꽤 많은 파트너사 직원들이 참여해주신 행사였습니다. 이번 세미나는 엘라스틱 코리아의 솔루션 아키텍트이신 필립님께서 진행해주셨고, 입문자 수준에서엘라스틱서치와 GenAI에 대한 개요, 그리고 응용을 위한 실습을 위주로 이루어졌습니다. 그 중 제가 이해하고 좋았던 부분들에 대해 공유해보겠습니다. 🖊️Generative AI 소개 GenAI에 대..

[Elasticsearch] - 집계(aggregation)

집계(aggregation)란? 엘라스틱에서 집계는 데이터를 그룹핑하고 통곗값을 얻는 기능으로 강력한 검색 성능과 ES를 고성능 집계 엔진으로 활용하게 해준다. 집계를 잘 이해할수록 키바나를 더 잘 사용할 수 있다. ES에는 다음과 같은 집계들이 있다. 메트릭 집계 버킷 집계 파이프라인 집계 집계의 요청과 응답 형태 집계를 위해서 특별한 API를 사용하지 않아도, Search API의 요청 본문에 aggs 파라미터를 추가함으로서 쿼리에 대한 집계를 생성할 수 있다. 메트릭 집계 메트릭 집계는 필드의 최소/최대/합계/평균 등 통계 결과를 보여준다. 다음은 메트릭 집계의 종류이다. 메트릭 집계 설명 avg 필드의 평균값을 계산한다. min 필드의 최솟값을 계산한다. max 필드의 최댓값을 계산한다. sum ..

[Elasticsearch] - 쿼리와 스코어링

쿼리 컨텍스트 vs 필터 컨텍스트 엘라스틱의 검색은 다음 두 가지로 나뉜다. 쿼리 컨텍스트 질의에 대한 유사도를 계산해 더 정확한 결과를 먼저 보여준다. 필터 컨텍스트 유사도를 계산하지 않고 일치 여부에 따른 결과만을 반환한다. 스코어 계산 과정을 생략해 쿼리 속도를 올릴 수 있다. 캐시를 이용할 수 있다. _search는 검색 쿼리를 위해 제공되는 REST API이고, match는 전문 검색을 위한 쿼리이다. 다음 예시를 보면 clothing 용어가 있는 도큐먼트를 찾아 총 3927개의 도큐먼트 중 스코어가 높은 순으로 정렬된다. 필터 컨텍스트와 쿼리 컨텍스트는 모두 search API를 사용한다. 단지 내용에 따라 쿼리가 구분되는데, 필터 컨텍스트는 논리(bool) 쿼리 내부의 filter 타입에 적..

[Elasticsearch] - 인덱스 템플릿 사용하기

인덱스 템플릿 인덱스 템플릿은 설정이 동일한 복수의 인덱스를 만들 때 사용한다. 인덱스를 파티셔닝하는 일이 많은데, 이 때 파티셔닝하는 인덱스들은 설정이 같아야 한다. 설정이 동일한 인덱스를 매번 일일이 작성하는 것은 매우 비효율적이다. 다음과 같이 템플릿 API를 사용해 현재 등록된 인덱스 템플릿을 본다. GET _index_tamplae 와일드카드 표현식으로 다음과 같이 특정 인덱스 템플릿을 확인할 수도 있다. GET _index_template/ilm* 인덱스 템플릿은 다양한 설정이 가능하지만 주로 매핑과 세팅 설정을 한다. 다음은 인덱스 템플릿을 생성하는 예시이다. PUT _index_template/test_template { "index_patterns": [ "test_*" ], "prior..

[Elasticsearch] - 엘라스틱 서치의 색인 With 분석기

역 인덱스 (Inverted index) ES는 텍스트와 도큐먼트를 인덱싱 시점에 용어 단위로 분해하고 역인덱스 사전을 구축한다. 특히, 기존의 데이터로 처리하기 힘든 대량의 비정형 데이터 검색이 가능하며, 전문 검색과 구조 검색 모두를 지원한다. 그리고 데이터들을 집계를 위해 최적화하고, 이를 바탕으로 병렬처리나 분산처리가 가능하다. 다소 생소한 개념인 역인덱스를 하는 과정을 알아보자. 먼저 평범한 관계형 DB에 다음과 같이 데이터를 저장한다고 생각해보자. 만약 이 데이터베이스에서 fox가 포함된 행을 찾는다면, Like %fox%를 사용해 모든 데이터베이스를 읽어야한다. 그러나 이러한 전방위 검색은 절대 해서는 안되는 불문율이 있다. (데이터가 많으면 시스템이 맛이 갈 수도 있다) 따라서 ES는 데이..

article thumbnail
[ELK] - 엘라스틱 서치 기본 개념 & 용어

엘라스틱 서치(ES)의 모든 기능은 REST API 형태입니다. 몇가지 예시는 다음과 같습니다. 테스트는 키바나 → Management → Dev Tools 에서 실행했습니다. POST /user/_doc/3 { "name": "kim", "age": 10 } ➡️ es_index라는 인덱스를 만들고 1번 도큐먼트를 생성한다. GET user ➡️ user를 조회한다. GET user/_doc/3 ➡️ user 내부의 3번 도큐먼트만 조회한다. DELETE user ➡️ user를 삭제한다. GET _cat/indices?v ➡️내부 인덱스 목록을 확인한다. (앞서 DELETE를 했다면 user가 삭제된 것을 확인할 수 있다.) 인덱스, 도큐먼트.. 기존 RDB에서도 쓰는 용어이지만, 뭔가 개념이 다르다..

article thumbnail
[ELK] - 엘라스틱 서치란?
🛠️TOOL/🔭Elasticsearch 2024. 3. 27. 18:02

엘라스틱 서치 엘라스틱 서치(Elastic Search, 통칭 ES)는 Full-text search engine으로 처음 개발되었지만, 검색엔진을 넘어 보안, 로그분석, 전문(Full-text)분석 등 다양한 영역에서 중요한 역할을 하고 있다. Kibana, Logstash, Beats들과 함께 Elastic Stack이라 불린다. ES가 타 NoSQL 제품보다 월등히 빠르고 어려운 검색, 집계 성능을 보이는 이유? ➡️검색 엔진인 동시에 데이터베이스이기 때문 충분한 크기의 클러스터가 구성되어 있다면 1초 이내의 응답 속도 보인다. ES의 또 하나의 특징은 바로 스코어링, 연관도에 따른 정렬이다. 타 데이터베이스도 제공하는 필드값 기준 정렬이 아닌, 유사도 스코어 정렬로 인해 복잡한 문자열 콘텐츠 검색..