엘라스틱 서치에서 집계는 데이터를 그룹핑하고 통곗값을 얻는 기능으로 SQL의 GROUP BY와 통계함수를 포함하는 개념집계를 잘 이해할수록 키바나 툴을 더 잘 사용할 수 있다.집계를 위한 특별한 API가 제공되는 것이 아니다. search API의 요청본문에 aggs
쿼리컨텍스트필터 컨텍스트쿼리스트링과 쿼리 dsl의 차이점쿼리컨텍스트: 도큐먼트에서 연관성을 계산해 최대한 비슷한 데이터를 찾아준다.필터 컨텍스트: 찾고자하는 문자열이 정확한지 아닌지 예/아니요만 가지고 찾아준다.엘라스틱 서치에서 쿼리를 사용하는 방법은 쿼리 스트링과 쿼
엘라스틱 서치가 처음 등장했을때는 빅데이터 파이프라인을 구성하는 플랫폼 형태로 될것이라고 예상하기 어려웠을것이다. 엘라스틱 서치가 등장했을무렵 사이트내에서 전문 검색기능을 제공하는 강력한 소프트 웨어의 필요성이 있었고 검색솔루션 서비스는 대부분 구현체를 공개하지 않아서
가변 객체 을 Entity 필드로 사용해야할 경우 (@Convert) 무분별한 Dirty Checking을 막기 위해 equals를 꼭 Override 해야한다.그렇지 않을 경우 단순히 조회 로직에서도 Dirty Checking이 발생한다
프로그램을 작성하다보면 이런경우가 있다.dto로 작성된 필드가 있을수도 있고 없을수도 있는 상황에서 해당필드값들을 선택적으로 업데이트하고 만약에 값이 들어와 있지 않다면 그대로 값을 두는것이다.하지만 스프링에서 기존에 기본형태로 업데이트를 하는 방법은 Entity 객체
카프카커넥트는 아파치 카프카의 오픈소스 프로젝트 중 하나로, 데이터베이스 같은 외부 시스템과 카프카를 손쉽게 연결하기 위한 프레임워크입니다.대용량의 데이터를 카프카의 안팎으로 손쉽게 이동시킬수 있습니다. 코드작성없이..프로듀서와 컨슈머를 직접 개발해 원하는 동작을 실행
해당 프로젝트 루트로 가서 ./gradlew build실행 ./gradlew init 실행docker로 빌드를 한후에 제빌드를 할때는 기존에 이미지를 다 제거해주고 제빌드 하시기 바랍니다.
요청 데이터가 무겁지만 변경이 잘 없는 데이터는 Headers에 케시컨트롤을 통해서 사용자와 서버가 서로 윈윈할수 있는 방법이 있다. 한번 최초 요청시에 request 요청이 캐싱돼서 이후 제요청시에는 http 통신을 하지 않고 클라이언트쪽에서 바로 캐싱돼서 데이터를
클라이언트 쪽에서 복합키의 정보를 모두 알지 않아도 간편하게 리소스 관리가 가능함 (ex: 책ID, 사용자ID)데이터를 식별할 수 있는 컬럼의 조합이 유니크하지 않을 때 (ex: 이름+저자+출판사로는 책 식별 불가할 수 있음. 동일한 명칭의 개정판이 나오기 때문)식별가
RDB에서 스키마란 정보를 구성하고 데이터가 저장될때에 약속을 만들어 주는것이라고 생각합니다. RDB에서는 스키마를 정의한 형태로 데이터를 입력해야하고 사전에 정의된 스키마의 내용과 다른 데이터를 추가하려고 시도하면 작업은 실패합니다.카프카에서 스키마가 없을때의 예를
java 진영의 대표적인 test Framework단위 테스트를 위한 도구를 제공단위 테스트란?코드의 특정 모듈이 의도된 대로 동작하는지 테스트 하는 절차를 의미모든 함수와 메소드에 대한 각가의 테스트 케이스를 작성하는것어노테이션을 기반으로 테스트를 지원단정문으로 테스
@Deprecated는 타입,필드,메소드등에 붙일수 있고 @Deprecated 표시되어 있는 메소드나 필드를 사용하면 빌드할 때 워닝메시지를 보여준다. 이 메소드는 없어질걸 알려주고 쓰지말라고 경고하는것@deprecated는 javadoc으로 이 메소드가 사라지는 이유
spring에서 디비접근시에 트랜잭션을 관리하는 방법은 아주 추상화가 잘 돼 있습니다. 바로 @Transactional 을 사용해주면 트랜잭션이 되기 때문입니다.이 마법의 내부를 공부해 봤습니다.데이터베이스 커넥션자바에서 데이터 베이스의 트랜잭션을 시작하는 유일한 방법
현제 사용중인 버전 체크하기kafkaᅳtopics.sh --version\-/usr/local/kafka/bln/kafka-toplcs.sh --version카프카의 릴리스 노트등을 잘 살펴보면서 업그레이드시 문제가 될 만한 부분은 없는지 확인합니다.스칼라 Scala
저같은 분이 또 있으실진 모르겠지만나름 개발자인데 회원가입을 못해서 해매며 알게된 사실을 포스팅 합니다.npm에 회원가입후 로그인을 시도하면 최초에 이메일로 전송된 인증코드를 입력하는 인증절차가 있습니다.이때 혹시 저처럼 정말 정확하게 인증코드를 넣었는데도 404 Ro
회사에서 사용하던 라이브러리에 우리가 원하는 기능이 없어서 제가 라이브러리를 포크해서 컨트리뷰트를 진행중에 있었습니다.성공적으로 우리회사의 핏에 맞게 수정을 한후에 테스트까지 끝낸후 typeScript를 쓰고 있던터라 build해주는 것이 귀찮아서 npm에 올리기로 했
Springboot AOP AOP - 핵심 기능과 부가기능 애플리케이션 로직은 크게 핵심기능과 부가 기능으로 나눌 수 있다. 핵심기능은 해당 객체가 제공하는 고유의 기능이다. 부가기능은 핵심기능을 보자하기위해 제공되는기능이다.(로구추적기 등등..) 위 기능들이 하나
RESTFul 웹서비스는 HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.기존에 Spring web을 사용하면 @RestController로 컨트롤러를 작성해서 사용해야하지만 Spring Data REST를 사용하면
스프링 애플리케이션에 프록시를 적용하려면 포인트컷과 어드바이스로 구성되어 있는 어드바이저를 만들어서 스프링빈으로 등록하면된다.그러면 나머지는 아ㅠ서 배운 자동 프록시 생성기가 모두 자동으로 처리해준다. 자동 프록시 생성기는 스프링 빈으로 등록된 어드바이저들을 찾고스프링
@Bean이나 컨포넌트 스캔으로 스프링빈을 등록하면, 스프링은 대상객체를 생성하고 스프링 컨테이너 내부의 빈 저장소에 등록을 한다.그리고 이후에는 스프링 컨테이너를 통해 등록한 스프링빈을 조회해서 사용하면 된다.스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저