분류 전체보기 17

파일명이 중복일때 숫자를 붙여서 새로운 파일명 만들기

파일을 복사할때 동일한 파일이 존재하는 경우 덮어쓰지 않도록 하려면 이름에 숫자를 붙여서 만들어야 하는 경우가 종종 발생함 fileName.txt, fileName(1).txt, fileName(2).txt ... 와 같이 (숫자)를 붙여서 새로운 파일명을 생성하여 처리 public static String getNewFileName(String toFilePath) { String dest = toFilePath; String dot = "."; if (StringUtils.isEmpty(toFilePath)) return dest; if(!Files.exists(Paths.get(dest))) return dest; try { File f = new File(toFilePath); String fil..

즐겁게/anything 2022.12.16

Elasticsearch Head 플러그인(Chrome Extension)

elasticsearch 6.0 이전에는 엘라스틱 플러그인으로 많이 사용되던 head 플러그인, 이후 버전에는 사라지는 듯했으나 크롬 확장프로그램으로 설치하여 더 편하게 사용할 수 있게 되었음. 키바나가 없는경우에도 전반적인 클러스터의 상태나 데이터를 조회함에 있어 매우 유용한 수단으로 사용가능 크롬웹스토어에서 Multi Elasticsearch Head 를 설치하고 elasticsearch 에 연결할수 있음. 사설인증서를 이용하여 https로 접속하는 경우 로그인창이 뜨지 않을수 있는데, 이 경우에는 브라우저 주소창에 미리 elasticsearch서버 url 을 호출하여 안전하지 않음으로 이동을 선택하면 됨 정상적으로 인증에 성공하면 아래와 같이 인덱스 목록 및 클러스터의 health 상태 등에 대한 ..

ExpiringMap(net.jodah) 지정한 시간 동안만 저장되고 자동 삭제

지정한 시간동안 지정한 최대 개수만큼만 저장했다가 자동으로 삭제되는 맵, 캐시와 유사 : A high performance, low-overhead, zero dependency, thread-safe ConcurrentMap implementation that expires entries. 참조: https://github.com/jhalterman/expiringmap GitHub - jhalterman/expiringmap: A high performance thread-safe map that expires entries A high performance thread-safe map that expires entries - GitHub - jhalterman/expiringmap: A high p..

즐겁게/anything 2022.11.02

JAVA 메모리 사용량 확인

현재 실행중인 Java application의 메모리 사용량을 확인해 볼 수 있다.// JVM이 허용하는 최대 힙 메모리 크기, -Xmx// long maxMem = Runtime.getRuntime().maxMemory()/1024/1024;// 아래 내용(Runtime.getRuntime().maxMemory())을 보완하기위해 수정된 소스long maxMem = 0L;MemoryMXBean m = ManagementFactory.getMemoryMXBean();for (MemoryPoolMXBean mp : ManagementFactory.getMemoryPoolMXBeans()) { if(mp.getName().indexOf("Tenured") > -1){ maxMem += mp..

즐겁게/anything 2022.10.27

elasticsearch snapshot 설정

multi-node로 구성된 cluster의 경우 각 노드별로 repostiory를 구성하면 안되고, 각 노드에서 공유 파일 시스템의 동일한 영역을 볼수 있도록 구성해야 한다. 1) elasticsearch.yml 에 path.repo 설정(각 노드에 동일하게 설정) path.repo: ["/data/elastic_snapshot "] 2) elastic 재기동 3) elastic에 repository 설정 curl -X PUT "http://localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d' { "type": "fs", "settings": { "location": "/data/elastic_snapshot..

JavaMail API를 이용한 메일 발송

javamail api를 이용하여 메일을 발송할 때 1) SMTP 아이디 인증을 통한 방식 또는 2) 발송서버의 아이피를 메일서버에 릴레이 허용 아이피로 등록하여 처리가 가능 public void sendMail(){ String smtpServer = "메일서버_아이피"; String smtpPort = "발송포트(25)"; // SMTP 인증방식을 이용하는 경우 // String smtpUserid = "SMTP 인증 계정"; // String smtpPwd = "SMTP 인증 비밀번호"; Properties prop = new Properties(); // 메일서버 주소 prop.put("mail.smtp.host", smtpServer); // 포트(기본 25) prop.put("mail.smtp..

즐겁게/anything 2022.10.23

Query, SearchRequest를 이용한 검색

elasticsearch에서 Query를 이용하여 지난글에서 추가한 Board를 검색 참조: IndexRequest를 이용한 Document 추가 IndexRequest를 이용한 Document 추가 Board와 Author 라는 게시판, 작성자 클래스가 있다고 할때 이를 이용하여 Index에 추가를 할수 있음 @Setter @Getter public class Board { private int idx; private String category; private String subject; private String body; priva realkoy.tistory.com public void search() { ElasticsearchClient client = null; try { // Index ..

IndexRequest를 이용한 Document 추가

Board와 Author 라는 게시판, 작성자 클래스가 있다고 할때 이를 이용하여 Index에 추가를 할수 있음 @Setter @Getter public class Board { private int idx; private String category; private String subject; private String body; private Author author; } @Setter @Getter @AllArgsConstructor public class Author { private String userid; private String name; private String email; } public void insertDocument() { ElasticsearchClient client = ..

PutIndicesSettingsRequest를 이용한 인덱스 Settings 값 변경

PutIndicesSettingsRequest를 이용하여 IndexSetting을 변경할수 있음 단, numberOfShards는 변경이 불가 public void updateIndexSettings() { ElasticsearchClient client = null; try { // Index name to delete String indexName = "test-Index"; int replicas = 0; int maxResultWindows = 10000; String refreshInterval = "5s"; // 참고로 Shard 개수는 변경이 불가 IndexSettings indexSettings = new IndexSettings.Builder() // Replica 개수 .numberOf..

DeleteIndexRequest를 이용한 인덱스삭제

elastic 8.x 에서 java api client의 DeleteIndexRequest를 이용하여 Index 삭제 public void deleteIndex() { ElasticsearchClient client = null; try { // Index name to delete String indexName = "test-Index"; DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest.Builder().index(indexName).build() // ElasticSearchClient client = ElasticClient.getInstacne(); DeleteIndexResponse deleteResponse = client.ind..

반응형