전체 글 46

엘라스틱서치(elasticsearch) 집계

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 5장을 정리하여 쓴 글입니다. 엘라스틱서치도 데이터를 날짜별로 묶거나 특정 카테고리별로 묶어 그룹별 통계를 내는 집계 개념(aggregation)이 있다. 집계? 데이터를 그룹핑하고 통계값을 얻는 기능이다. 집계 기능은 강력한 검색 성능과 맞물려 엘라스틱서치를 고성능 집계 엔진으로 사용할 수 있도록 한다. 대표적인 예로 키바나가 있다. 집계의 종류는 메트릭 집계, 버킷 집계, 파이프라인 집계가 있다. 집계의 Request와 Response Request 집계의 Requset는 aggs로 시작을 한다. aggs는 집계 요청을 하겠다는 의미, my_aggs는 사용자가 지정하는 집계 이름이다. agg_type은 집계 타입을 의미한다. 집계 타입에 대해서는 ..

엘라스틱서치(elasticSearch) 검색 - 2부

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 4장을 정리하여 쓴 글입니다. 1부에 이어서 2부에서는 전문 쿼리, 매치 쿼리, 용어 쿼리, 멀티 매치 쿼리, 범위 쿼리, 논리 쿼리, 패턴 쿼리에 대해서 알아보려고 한다. 엘라스틱서치는 검색 쿼리로써 리프 쿼리, 복합 쿼리로 나눌 수 있다. 리프 쿼리 ? 특정 필드에서 용어를 찾는 쿼리로 match, term, range 등이 있다. 복합 쿼리 ? bool 쿼리 등이 있다. 전문 쿼리 (Full Text Query)와 용어 수준 쿼리 (Term level Query)를 자세히 보고 복합 쿼리인 논리 쿼리로 개념을 확장하려고 한다. 전문 쿼리와 용어 수준 쿼리 전문 쿼리 ? 전문 검색을 하기 위해 사용되며, 전문 검색을 할 필드는 인덱스 매핑 시 텍스..

엘라스틱서치(elasticSearch) 검색 - 1부

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 4장을 정리하여 쓴 글입니다. 엘라스틱서치는 전문 검색 기능을 시작으로 꾸준히 성장했으며, 다양한 검색 쿼리를 지원하고 있다. 1부에서는 쿼리 컨텍스트와 필터 컨텍스트의 차이, 쿼리 스트링과 쿼리 DSL의 차이점 그리고 유사 스코어를 계산법에 대해서 알아본 후 2부에서 전문 쿼리, 매치 쿼리, 용어 쿼리, 멀티 매치 쿼리, 범위 쿼리, 논리 쿼리, 패턴 쿼리에 대해서 알아보려고 한다. 쿼리 컨텍스트와 필터 컨텍스트 쿼리 컨텍스트 ? 질의에 대한 유사도를 계산해 이를 기준으로 정확한 결과를 먼저 보여줌. 필터 컨텍스트 ? 유사도를 계산하지 않고 일치 여부에 따른 결과만을 반환한다. 질의에 대한 유사도의 결과 반환에 따라 다르다고 나와있다. 쿼리 컨텍스트..

OOP와 FP의 조화 : 자바 스칼라 비교(Scala란?)

* 해당 글은 모던 자바 인 액션 Chapter 20을 요약한 글입니다. 해당 챕터에서는 함수형 프로그래밍을 더욱 자극하기 위하여 자바와 스칼라를 비교하여 함수형 프로그래밍에 대한 호기심을 만족시켜주기 위하여 작성되었다. 하지만 나는 스칼라에 대해 정리하려고 한다. Scala란? 함수형 프로그래밍 언어로 자바의 복잡함을 단순화 시키기 위하여 만들어진 언어이다. 자바와 같이 JVM 위에서 돌아간다. Scala의 자료구조는 리스트, 집합, 맵, 스트림, 튜플, 옵션 등을 제공한다. Scala는 Java interface 대신에 트레이트를 사용한다. 스칼라 구조 Class Hello { val Hello = "Thanks for reading our book") def sayThankyou() { printl..

Scala 2022.02.26

엘라스틱서치(elasticSearch) 기본 - 2부

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 3장을 정리하여 쓴 글입니다. 벌크 데이터 POST _bulk {"index":{"_index":"test", "_id":"1"}} {"field":"value one"} {"index":{"_index":"test", "_id":"2"}} {"field":"value two"} {"delete":{"_index":"test", "_id":"2"}} {"create":{"_index":"test", "_id":"3"}} {"field":"value three"} {"update":{"_index":"test", "_id":"1"}} {"doc":{"field":"value two"}} 여러개의 Document를 각각 API를 불러서 요청하는 것보다 B..

엘라스틱서치(elasticSearch) 기본 - 1부

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 3장을 정리하여 쓴 글입니다. ElasticSearch Request / Response ElasitcSearch의 Request와 Response는 모두 REST API 형태로 제공한다. REST API란? Representational State Transfer 약자로써 웹상의 모든 리소스에 URL를 부여하고 활용하는 아키텍처이다. 시스템 상태 확인 - cat (compact and aligned text) cat를 통해 제공하는 기능들은 시스템의 상태를 확인하는 용도이다. cat API를 통해서 Node / Shard / Templat 등의 상태 정보를 확인 할 수 있다. 현재 클러스터 상태를 빠르게 확인할 수 있다. 즉, 시스템 운영할 때 클러..

엘라스틱스택(ELK Stack) 이란?

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 1 장을 정리하여 쓴 글입니다. 엘라스틱 스택은 무엇일까? 1. 엘라스틱 스택은 총 4개 엘라스틱 서치, 로그 스태시, 비츠, 키바나로 이루어져있다. 2. 빅데이터 파이프라인을 구성하기 위한 데이터 수집, 가공, 저장, 분석, 시각화에 필요한 모든 기능을 제공한다. 추가적인 정보 : 처음부터 엘라스틱 스택이 만들어 진 것은 아니다. 엘라스틱 스택은 엘라스틱 서치 > 로그 스태시, 키바나 > 비츠 순으로 오픈소스 프로젝트가 진행되며 만들어졌다. 즉, 처음에 만들어진 엘라스틱 서치를 이용한 오픈소스 검색 엔진에 머무르는게 아닌, 플랫폼으로 발전하는 길을 택했다고 볼 수 있다. 엘라스틱서치 검색 엔진이다. 용어 단위로 분해되고 역인덱스 사전을 구춘한다. 연..

Effective Kotlin 3기 마지막 회고

해당 글은 NextStep 이펙티브 코틀린 with TDD, Refactoring, Clean Code 3기를 진행하며 쓴 회고글입니다. 미션 수행률 100퍼센트 12월 8일 마지막 머지로 나의 이펙티브 코틀린의 모든 미션을 완주했다. 즉, 마지막 머지를 통하여 모든 미션을 다 통과한 것이다. 야호! 다 통과 했다! 이때의 감정은 기쁨 반, 아쉬움 반? 이였다. 기쁜 감정은 '과정이 끝났다!!'는 감정이었고, 아쉬운 감정은 '얼레..? 더 안 봐주시는 건가!!??? 제 코드 좀 더 ... 갈궈 주세요..'라는 감정이었다. 과정 종료 2021년 12월 7일 제이슨의 강의를 마지막으로 수업이 끝났으며, 2021년 12월 13일 날 리뷰어님들이 집중적으로 코드 리뷰를 해주는 시간이 끝이 났다. 이 이후에 코드..

Effective Kotlin 3기 세 번째 회고

해당 글은 NextStep 이펙티브 코틀린 with TDD, Refactoring, Clean Code 3기를 진행하며 쓴 회고글입니다. 실전 요번 블랙잭 미션은 신기하게도 리뷰어님과 많은 대화를 하게 된 미션이였다. 지금까지 만난 리뷰어님 중에서 가장 스파르타한 리뷰어님이였다. 요번 Effective Kotlin을 들으면서 코틀린에 대해서 많은 것을 배웠고, 많은 실험을 해보았다. 하지만 가장 중요한 것은 실전에는 어떻게 적용을 해야 하는지에 대한 것이었다. 어떻게 적용을 해야 할까 생각하다가, 아주 좋은 타이밍 때 한 로직에서 버그가 일어났고, 버그를 고치기 위해서는 많은 리팩토링을 해야 했었다. 리팩토링하면서 배운 것에 대해 적용하기 좋은 구조였다. 이렇게 나는 실전에 나의 새로운 코드를 적용해나가..

Effective Kotlin 3기 두 번째 회고

해당 글은 NextStep 이펙티브 코틀린 with TDD, Refactoring, Clean Code 3기를 진행하며 쓴 회고글입니다. 배움 Effective Kotlin 3기 2주차가 넘어갔다. 현재까지 내가 진행한 미션은 레이싱카, 로또 두 가지이다. 레이싱카는 마무리가 된 상태이고, 로또는 마지막 단계에서 추가적인 피드백을 받고 있는 상태이다. 두 미션을 모두 진행하면서 Effective Kotlin이라는 프로그램은 점진적인 성장을 원한다는 느낌을 많이 받았다. 그 이유는 미션을 한 단계식 클리어할수록 새로운 기능 요구 사항과 프로그래밍 요구 사항이 추가가 되는데, 이 부분에 대해서 많은 생각을 해야 하기 때문이다. "처음에는 하나의 프로그래밍 요구사항에서 시작하지만, 어느순간 10개 이상 늘어나..