역색인
키워드
를 통해문서
를 찾아내는 방식
색인된키워드
를 이용해 역으로본문(혹은 문서)
을 찾는 방식
점심
이 들어간 문장을 찾기
ElasticSearch
NoSQL
색인
(이름이"ㅇㅇ"
인사람을 찾기)
MySQL
위의
역색인
을 이용한검색 DB
yarn add @elastic/elasticsearch
yarn add @nestjs/elasticsearch
Create
id
: Unique ID
index
:MYSQL
에서의Table
document
:Schema
this.elasticsearchService.create({ id: 'myid', index: 'myproduct', document: { ...createProductInput, }, });
Search
this.elasticsearchService.search({ index: 'myproduct', query: { match_all: {}, }, });
기존
정형 SQL
에서로그성데이터
와검색성데이터
를 가져와ElasticSearch
로 저장시킨다.
1단계
/*
Settings
*/
input {
jdbc {
# jar파일의 경로
jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-8.0.28.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://my-database-class:3306/mydocker02"
jdbc_user => "root"
jdbc_password => "root"
# 이 명령문을 언제 실행할것인지 예약.
schedule => "* * * * *"
# 들어가서 입력할 QUERY문
statement => "select * from product"
}
}
output{
# elasticsearch {
# hosts => "elasticsearch:9200"
# index => "myproduct"
# }
}
2단계
### 2단계
jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-8.0.28.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://my-database-class:3306/mydocker02"
jdbc_user => "root"
jdbc_password => "root"
schedule => "* * * * *"
## 어떤 컬럼밸류를 사용할것인지
use_column_value => true
## 어떤 컬럼을 추적할것인지?
tracking_column => "updatedat"
tracking_column_type => "timestamp"
## 이 파일안에 마지막 실행한 데이터를 저장한다.
last_run_metadata_path => "./aaa.txt"
statement => "select id, name, price, updatedat from product where updatedat > :sql_last_value order by updatedat asc"
해당하는 테이블에 updatedAt 컬럼을 만들어서
updatedAt을 저장하는 파일을 만든후, 조회할때마다 updatedAt이 가장 큰 컬럼을 저장후, 조건으로 계속건다
3단계
### 3단계
jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-8.0.28.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://my-database-class:3306/mydocker02"
jdbc_user => "root"
jdbc_password => "root"
schedule => "* * * * *"
use_column_value => true
tracking_column => "updatedat"
tracking_column_type => "numeric"
last_run_metadata_path => "./aaa.txt"
statement => "select id, name, price, unix_timestamp(updatedat) as updatedat from product where unix_timestamp(updatedat) > :sql_last_value order by updatedat asc"
unixtime
으로 계산해 비교할수있는 정확한 시간으로 만든다
명령어를 등록하면 해당 스케쥴에 맞게 명령어가 실행된다 (ex: 정기결제, 스크래핑등등..)
ElasticSearch
를 활용하는 시각화프로그램
검색엔진을 이런형태로 구현하기..
파이프라인만들기
Week6 Test :
3/4
프로그래머스-LV1-최소직사각형