반응형

우선 mysql 테이블의 데이터를 담을 엘라스틱서치의 인덱스를 생성해준다.

 

$curl -u elastic:****** -XPUT 'localhost:9200/test?pretty'

 

이렇게 index만 생성해준다. 매핑은 필요없다. 테이블의 값을 가져와서 그대로 담아주기때문에 그때 자동으로 매핑이 생성된다.

 

이제 logstash를 위한 config파일을 만들어보자.

 

$cd /usr/share/logstash/data

 

config파일은 어디에 있어도 상관없다.

 

$vi test.conf

 

input {
  jdbc {
    jdbc_driver_library=>"/usr/share/logstash/bin/mysql-connector-j-8.0.33.jar"
    jdbc_driver_class=>"com.mysql.jdbc.Driver"
    jdbc_validate_connection=>true
    jdbc_connection_string=>"jdbc:mysql://localhost:3306/mydb?useSSL=false"
    jdbc_user=>"****"
    jdbc_password=>"********"
    schedule => "10 * * * * *"
    statement=>"select * from mydb.testtable"}
    }
output {
  elasticsearch {
    hosts=>["localhost:9200"]
    index=>"test"
    document_id=>"%{idx}"
    user => "elastic"
    password => "********"
    }
    stdout {}
  }

test.conf에 위 내용을 입력하고 저장한다.대충 보면 무슨 뜻인지 알것이다.

 

input은 데이터를 가져오는거고 output은 데이터를 입력하는거다.mysql의 testtable에서 엘라스틱서치의 test 인덱스에 넣는거다.

 

여기서 중요하게 봐야할것은 output의 document_id이다. 유니크한 pk를 입력해주어야한다. mysql 테이블의 pk를 입력해주면 좋다. idx라고 돼 있는것은 mysql 테이블의 컬럼명이다.

 

config를 만들었으니 실행해보자

 

$cd /usr/share/logstash/bin

$./logstash -f ../data/test.conf

$nohup ./logstash -f ../data/test.conf & -> 백그라운드로 계속 실행할때 사용

 

이렇게 해주고 기다리면 testtable을 읽어와서 test 인덱스에 기록한다. 엘라스틱서치에서 확인해보면 알 수 있다.

 

아주 단순한 기본적인 방법으로 연동해보았다. 다음엔 좀더 고급 기술을 사용해보겠다.

반응형

+ Recent posts