SQL에서 INESERT문을 작성할 때 해당 테이블에 특정 데이터가 없을 때에만 값을 집어넣는 쿼리문을 짜야할 때가 있다. 이때 자연스럽게 작성되는 문장으로 INSERT INTO TBL(col1, col2, col3) VALUSE(col1val, col2val, col3val) WHERE NOT EXISTS SELECT(없어야 할 데이터값 조회 조건) 뭐이런식으로 작성할 수 있는데 이때 VALUES를 지원하지 않는 문제가 있는것 같다. SQL - 더미 테이블 DUAL DUAL이라는 더미 테이블 즉, 가상의 테이블을 통해서 함수에 대한 쓰임을 알고 싶은데 특정 테이블을 생성하기 귀찮은 경우가 있는데 이때 DUAL테이블을 이용할 수도 있고 이 포스팅에서는 INSERT문에서 VALUES 대신에 사용하기도 한다..
프로젝트를 진행하다보면 일정시간마다 작동해야하는 서비스가 존재할 수 있다. 처음에는 어떻게 구현해야할지 몰라서 스레드를 통해서 구현할까 생각도 했었는데 스레드를 사용하게되면 스레드에서 원하는 시간조건을 sleep 통해 걸어줘야하고 조건을 걸기가 좀 귀찮은 측면이 존재한다. 하지만 스프링에서 지원하는 scheduler를 사용하면 간편하게 구현할 수 있다. 시간조건 또한 Cron 표현식을 통해서 어렵지 않게 작성할 수 있다. 이를 사용하기위해선 servlet.xml 설정을 해야하는데 이는 생략한다. 클래스파일을 등록하는 것은 간단하다. 클래스에 @Component 어노테이션을 달아주고 메소드 앞에 스케쥴 어노테이션을 작성해주면된다. @Component public class Scheduler { /** * ..
POST sec/_delete_by_query { "size": 1, "query": { "range": { "systemtime": { "from": null, "to": "2022-01-16 00:00:00", "include_lower": true, "include_upper": true, "format": "yyyy-MM-dd HH:mm:ss", "boost": 1 } } }, "_source": false } 결과 이렇듯 ElasticSearch에서는 delete 쿼리를 날릴때 size가 설정되어있다고하여 size 개수만큼만 삭제되는게 아니다. size는 무시해도된다.
get 요청에서 _mapping 명령어 사용시 각 필드의 데이터 타입이 무엇인지 확인 할 수 있다. GET camo_system_logs/_mapping { } { "camo_system_logs" : { "mappings" : { "properties" : { "cluster" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "cpu_usage_per" : { "type" : "float" }, "disk_total" : { "type" : "long" }, "disk_usage" : { "type" : "long" }, "host" : { "type" : "text", "fiel..
ElasticSearch를 이용하다보면 가끔씩 필드 속성제한을 해제할 필요가 있다. 그럴때 아래와 같은 명령어를 통해서 설정할 수 있다. PUT test_index/_settings { "index.mapping.total_fields.limit": 2000 } 그리고 Aggreagation 의 요청 처리속도는 size 설정이 영향을 미치지 않는다. "query": { "bool": { "must": [ { "range": { "systemtime.keyword": { "from": "2022-02-25 00:00:00", "to": null, "include_lower": true, "include_upper": true, "format": "yyyy-MM-dd HH:mm:ss", "boost": 1 ..