Elasticsearch Logstash사용하여 MariaDB 연결

ganadara·2023년 3월 21일
0

project

목록 보기
9/9

os

  • Windows 11
  • java: jdk-18.0.2.1
  • elasticsearch-8.6.2
  • kibana-8.6.2
  • logstash-8.6.2
    Elasticsearch는 JAVA로 개발되었기에 JAVA를 설치해야 작동된다.

사전점검

  1. Elasticsearch.bat 파일 실행 후
    작동 확인 : http://127.0.0.1:9200/

  2. Kibana.bat 파일 실행 후
    작동 확인 : http://127.0.0.1:5601/

  3. mysql 플러그인 설치
    https://mvnrepository.com/artifact/mysql/mysql-connector-java

  4. C:\logstash-8.6.2-windows-x86_64\logstash-8.6.2\config 위치에
    logstash_mysql.conf 파일 작성

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  jdbc {
    jdbc_driver_library => "C:/logstash-8.6.2/lib/mysql-connector-j-8.0.32.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/AWS-RDS?serverTimezone=UTC"
    jdbc_user => "root"
    jdbc_password =>"1234"
    jdbc_paging_enabled => true
    schedule => "* * * * *"
    statement => "SELECT * FROM rnr"
    use_column_value => true
    tracking_column => "rnr"  
    clean_run => true
  }
}
filter {
  mutate {
    copy => { "id" => "[@metadata][_id]"}
    remove_field => ["id", "@version", "unix_ts_in_secs"]
  }
}
output {
  elasticsearch {
      hosts => ["localhost:9200"]
      index => "logstashmysql"
  } stdout { 
	  codec => rubydebug 
  }
}

Logstash 실행

  • 명령어
    cmd에서 실행
 cd C:\logstash-8.6.2-windows-x86_64\logstash-8.6.2\bin
 logstash -f C:\logstash-8.6.2-windows-x86_64\logstash-8.6.2\config\logstash-sample-copy.conf

kibana을 사용하여 인덱스 생성

PUT /rnr
{
  "settings": { // 셋팅 설정
    "analysis": { // 분석 설정
      "analyzer": { 
        "autocomplete": { // autocomplete 라는 명칭 지정
          "tokenizer": "autocomplete", // 데이터 토큰하는 방식 지정 tokenizer: autocomplete를 가져옴
          "filter": [ // 필터 검색시 문자 소문자화
            "lowercase"
          ]
        },
        "autocomplete_search": { //영어를 모두 소문자로 토큰화함.
          "tokenizer": "lowercase"
        }
      },
      "tokenizer": { // 데이터 토큰화 방식
        "autocomplete": { // 방식에 대한 명칭
          "type": "edge_ngram", // 토큰화 할 plugin 설정 edge_ngram은 기본 내장입니다
          "min_gram": 1, // 최소 토큰값 길이 (1로 지정시 한글자 검색이 가능해짐. 정확도 낮음. 2로 지정시 한글자 검색 안됨.)
          "max_gram": 20, // 최대 토큰값 길이
          "token_chars": [
            "letter",
            "digit"
          ]
        }
      }
    }
  },
  //데이터 인덱스 매핑하는 과정 (추가하는것은 가능하므로 토큰화할 방식이 필요한 컬럼만 직접 설정해줌)
  "mappings": { 
    "properties": {
      "title": { // 쿼리문에서 title 값만 설정
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        },
        //위에서 지정한 analyzer 내용
        "analyzer": "autocomplete", 
        "search_analyzer": "autocomplete_search" 
      }
    }
  }
}

index 확인

  • mariadb 데이터베이스명 확인
    MySQL Client 실행 후
 show databases;
  • mariadb 테이블명 확인
use rnr; #확인할 데이터베이스 사용
show tables;

오류

  • 오류
bin\elasticsearch-create-enrollment-token.bat --scope kibana

오류 해결: 'sudo'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.
시스템 변수 - Path에 C:\WINDOWS\SYSTEM32 추가

profile
DL 공부중

0개의 댓글