참고

 

 

Mysql full text 검색(전문 검색)

 

  1. Mysql  5.6 버전 이후에는 Inno db에도 full text 검색(인덱스 추가) 가능

  1. 주의

    1. 한국어 검색 특성상 보통은 '2글자'이상부터 검색되어야 하는데 mysql 기본 설정은 4글자이니 수정해야 함

      1. SHOW VARIABLES WHERE variable_name LIKE 'ft_m%'; 로 확인하면 4글자인데 최소 값을 2글자로 변경

    2. 복수개의 컬럼을 대상으로 full_text 검색을 진행시에는 해당 컬럼 모두가 포함된 full_text 인덱스가 필요

      1. 예) title과 content 2개 컬럼을 대상으로 full_text 검색을 실행하려면 2개 컬럼이 포함된 full_text 인덱스가 필요

        1. 쿼리 예) SELECT * FROM xe_documents WHERE MATCH(title, content) AGAINST('+답변 +조합' IN BOOLEAN MODE)

 

[사용 예]

 

테이블 생성

CREATE TABLE `tbl_full` (

  `key` int(10) unsigned NOT NULL COMMENT '식별값',

  `content` text COMMENT '내용',

  PRIMARY KEY (`key`),

  FULLTEXT KEY letter_content (letter_content)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='테이블';

 

 

실행 - 자연어 검색(keyword가 포함되어 있는 row를 찾음)

select * from tbl_full where match(content) against ('내용');

 

실행 - boolean mode 검색(keyword가 포함되어 있는 row를 찾고 추가적인 규칙 이용)

select * from tbl_full where match(content) against ('내용*' in boolean mode);

-- col like '내용%' 의 형태로 검색되지만 동일하지는 않음

-- "가나다라 내용마바" 검색가능

-- "가나다라내용마바" 검색불가능

ex) SELECT * FROM xe_documents WHERE MATCH(content) AGAINST('+답변 +조합' IN BOOLEAN MODE)

 

실행 - 쿼리 확장 검색(자연어 검색을 이용하여 데이터 셋을 만들어 다시 검색)

select * from tbl_full where match(content) against ('내용*' WITH QUERY EXPANSION);

-- col like '내용%' 의 형태로 검색되지만 동일하지는 않음

-- "가나다라 내용마바" 검색가능

-- "가나다라내용마바" 검색불가능

 

 

불린 검색시 사용 가능 키워드

연산자 없음: 정확하게 일치하는 단어 반환

> against(‘keyword1 keyword2’)

> 정확하게 keyword1 또는 keyword2 일치하는 row 검색

+ : keyword가 포함된 행 반환

> against(‘+keyword1 +keyword2’ in boolean mode)

> keyword1과 keyword2 포함한 row 검색

- : keyword가 포함된 행 제외

> against(‘+keyword1 -keyword2’ in boolean mode)

> keyword1은 포함하지만 keyword2 포함하지 않는 row 검색

* : keyword를 포함한 prefix 형태의 검색 가능

> against(‘keyword1*’ in boolean mode)

> keyword1은 포함(keyword1%)한 row 검색

<> : 값의 관계 비교, 해당하는 값 반환

“” : 해당 콤마 사이 keyword 반환

> “keyword1 keyword2” 는 찾지만 “keyword1 keyword3 keyword2”는 찾을수 없음

 

 

  1. 프로젝트 상단의 run 부분의 select box에서 Edit Configurations 선택

     

  2. Environment -> VM options

 

 

참고:  https://github.com/spring-projects/spring-loaded

목적: spring boot로 개발 도중에 was 재 시작 없이 작업 중인 소스코드를 적용하여 생산성 향상

 

  1.  springloaded 라이브러리를 maven 디펜더시에 추가 

        <dependency>

            <groupId>org.springframework</groupId>

          <artifactId>springloaded</artifactId>

        </dependency>

  1. springloaded jar파일이 로컬 .m2에 저장됨

    1. ex) C:\Users\{계정명}\.m2\repository\org\springframework\springloaded\1.2.8.RELEASE\springloaded-1.2.8.RELEASE.jar

  2. spring boot의 config에서 VM Arguments에 설정

    1. ex) -javaagent:C:\Users\{계정명}\.m2\repository\org\springframework\springloaded\1.2.8.RELEASE\springloaded-1.2.8.RELEASE.jar -noverify

    2. ex) 샘플 캡쳐

  3. 기타 

    1. 버전 및 파일 path 체크

    2. maven에 추가하지 않고, 해당 jar파일만 다운로드해서 사용해도 무방할 듯(프로젝트에 불필요한 라이브러리가 추가되지 않음)

 

 

 

intellij에서는 아래처럼 셋팅


아래 링크를 참고해서 nexus를 설치해봄. 


#설치하기
Centos에 biz라는 계정이 ~/apps 하위에 설치한다는 가정하에 진행

cd ~/apps
wget http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz --no-check-certificate
tar -xzf nexus-latest-bundle.tar.gz && rm -f nexus-latest-bundle.tar.gz && ln -s nexus-2.14.12-02 ~/apps/nexus


#서비스 등록
sudo su
cp /home/biz/apps/nexus/bin/nexus /etc/init.d/nexus
vi /etc/init.d/nexus 후 아래 내용으로 수정

#NEXUS_HOME=".."
NEXUS_HOME="/home/biz/apps/nexus"
#RUN_AS_USER=
RUN_AS_USER=biz
#PIDDIR="."
PIDDIR="/home/biz/apps/nexus"


#서비스 시작
service nexus start

#재 부팅시 자동 재시작 처리(필요시)
chkconfig nexus on


#시작 여부 확인
ps -ef | grep nexus | grep -v grep
netstat -tnlp | grep java


#접속
http://서버주소:8081/nexus


#설정
admin으로 로그인
기본 ID/PW는 admin / admin123 임

Download Remote Indexed를 True로 변경



2022-10-31 기준으로 업데이트해뒀습니다.
 
  • AdoptoOpenJDK관리 주체 변경에 따른 URL변경 등의 내용 업데이트
  • 참고로 https://github.com/adoptium/temurin11-binaries/releases 에서 필요한 환경에 맞춰서 최신 버전 다운로드
    • 예) 리눅스 64bit 핫스팟이라면 OpenJDK11U-jdk_x64_linux_hotspot_11.0.17_8.tar.gz 다운로드
 

커맨드 예)

#다운로드
wget 'https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.17%2B8/OpenJDK11U-jdk_x64_linux_hotspot_11.0.17_8.tar.gz' -O ~/apps/OpenJDK11U-jdk_x64_linux_hotspot_11.0.17_8.tar.gz
#압축해제
cd ~/apps && tar -xzf OpenJDK11U-jdk_x64_linux_hotspot_11.0.17_8.tar.gz && rm -f OpenJDK11U-jdk_x64_linux_hotspot_11.0.17_8.tar.gz

#심볼릭링크(필요시)
cd ~/apps && ln -s jdk-11.0.7+10 jdk_11

#DNS TTL수정(10초로, 어플리케이션마다 틀려야할 수 있음)
echo 'networkaddress.cache.ttl=10' >> ~/apps/jdk-11.0.17+8/conf/security/java.security
 
 
 
 

Releases · adoptium/temurin11-binaries

Temurin11 binaries. Contribute to adoptium/temurin11-binaries development by creating an account on GitHub.

github.com

 

openjdk 11설치 방법 및 기본 설정
  • 유저 home디렉토리/apps 하위에 설치한다는 전제
 
 
 
 
[설치]
#JDK 다운로드 및 설치(가능하면 adoptopen JDK판 사용)
 
  1. adoptopenJDK 배포판( https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=hotspot 에서 최신버전 확인 후 설치. 리눅스서버를 예로들면 OS는 Linux, Architecture X64)
    1. 명령어 예)
      1. cd ~/apps && tar -xzf OpenJDK11U-jdk_x64_linux_hotspot_11.0.7_10.tar.gz && rm -f OpenJDK11U-jdk_x64_linux_hotspot_11.0.7_10.tar.gz && ln -s jdk-11.0.7+10 jdk_11
  2. 오라클 배포판(약 6개월만 패치 지원)
    1. cd ~/apps && tar -xzf openjdk-11.0.2_linux-x64_bin.tar.gz && rm -f openjdk-11.0.2_linux-x64_bin.tar.gz && ln -s jdk-11.0.2 jdk_11
 
 
 
[기본설정(튜닝)]
 
1. JAVA DNS TTL 수정
echo 'networkaddress.cache.ttl=10' >> ~/apps/jdk_11/conf/security/java.security
 
# 환경변수 추가
echo 'export JAVA_11_HOME=~/apps/jdk_11' >> ~/.bashrc
source ~/.bashrc
 
#확인 방법
$JAVA_11_HOME/bin/java -version
=> java 11버전으로 나오면 됨
 
 
2. 난수 생성시 필요한 엔트로피 고갈되어 발생하는 문제 처리
원인 : java.security.SecureRandom 클래스는 Linux에서는 기본적으로 /dev/random 을 이용해서 난수를 생성하는데 필요한 엔트로피가 고갈되면 램덤값을 생성하는 로직이 대기하게 되고, 성능에 문제가 생길수 있음
 
해결 방법
- java 어플리케이션 시작시 -Djava.security.egd=file:/dev/./urandom 옵션을 주고 실행해서 해결
 
 

 


간단히 발표용으로 정리해서 slideshare에 업로드 해둠

 - 링크 : https://www.slideshare.net/seunghaeom/elk-apmwith-66


데모를 통한 시연에 시간을 많이 썻고, 어느정도 배경지식이 있다는 전제하이기 때문에 기초적인 부분은 모두 생략

'ElasticSearch > ELK' 카테고리의 다른 글

ELK APM(with 6.6 살펴보기) - #2  (0) 2019.02.18
ELK APM(with 6.6 살펴보기) - #1  (0) 2019.02.18
ELK 2.3.1 퀵 설치  (0) 2016.08.07
1편에서 기본 준비를 완료하였고 해당 문서는 테스트를 위한 내용을 담음

  1. java
    1. 테스트용 프로그램을 만들어서 서버에서 실행
      1. 테스트프로그램 다운로드 : wget  'https://github.com/oshnew/ELK-Study/raw/master/apm/sample-program/hello-demo.jar' -O hello-demo.jar
        1. 참고: APM agent없이 배포 : java -jar -Dserver.port=8700 hello-demo.jar
        2. APM agent와 함께 실행
java \
 -javaagent:elastic-apm-agent-1.3.0.jar\
 -Delastic.apm.service_name=hello-demo\
 -Delastic.apm.server_url=http://localhost:8200\
 -Delastic.apm.application_packages=org.example\
 -jar -Dserver.port=9878 hello-demo.jar


        1. 트래픽 발생
        2. 확인(로컬 Virtual box에서 실행 함)
    

'ElasticSearch > ELK' 카테고리의 다른 글

ELK APM(with 6.6 살펴보기) - slideshare버전 링크  (0) 2019.02.18
ELK APM(with 6.6 살펴보기) - #1  (0) 2019.02.18
ELK 2.3.1 퀵 설치  (0) 2016.08.07
  • 개인 메모 목적의 글입니다.
  • ELK 2.x 부터 5.0까지 사용하다가 오랜만에 최신 버전을 설치(+ APM기능 확인 목적)해보는 중입니다.


  1. 목적
    1. ELK APM을 설치 후 데모를 실행(ELK는 19년 2월 기준으로 최신 버전인 6.6버전)
    2. 몇 가지 언어로 프로그램을 만든 후 부하를 발생시키고 결과를 확인하는 과정에서 학습
      1. 기존 APM인 Pinpoint 등을 대체하거나 미 사용했던 언어 APM의 효용성 확인

  2. 사전 조사 자료
    1. 공식 문서
      1. 19년 2월 12일 기준 버전 6.6
        1. Elasticsearch와 필요 JVM : Oracle/OpenJDK**11 필요(링크)
    2. 지원언어(또는 프레임웤)
      1. Java
      2. Node.js
      3. Django
      4. Flask
      5. Rails
      6. Rack
      7. RUM - JS
      8. Go

  3. APM 구성 Components(참고 링크)
    1. Elasticsearch : full-text search & 분석엔진. 데이터 저장소, 검색이 수행됨. APM Agents에서 전송된 데이터가 최종적으로 저장됨
    2. Kibana : 시각화 컴포넌트, Elasticsearch에 질의를 요청하고 화면에 시각화 처리 함
    3. APM agents : 서비스와 동일한 언어로 개발된 client side의 프로그램. 서비스의 성능 관련 데이터와 에러 데이터를 런타임에 APM서버로 전송
    4. APM Server : Go로 작성된서버이며 APM agents로부터 데이터를 JSON HTTP API로 전송 받아서 documents(Elasticserarch의 데이터 row단위)를 만들어서 Elasticsearch에 저장함

  4. 설치방법
    1. Elasticsearch
      1. 6.6버전은 open jdk 11설치(참고 링크)
      2. elasticserarch 6.6설치 링크 
    2. Kibana
      1. config/kibana.yml 파일에서 server.host: "0.0.0.0" 로 변경하면 모든 IP에서 웹 접근이 허용 됨




 오늘은 일단 APM Componets 중 Elasticsearch와 kibana 까지 설치 후 로컬PC에서 샘플이 작동 함 - Virtualbox 포트포워딩 처리 함. OS는 CentOS



'ElasticSearch > ELK' 카테고리의 다른 글

ELK APM(with 6.6 살펴보기) - slideshare버전 링크  (0) 2019.02.18
ELK APM(with 6.6 살펴보기) - #2  (0) 2019.02.18
ELK 2.3.1 퀵 설치  (0) 2016.08.07

+ Recent posts