<!-- Elasticsearch -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.17.15</version>
</dependency>
이미 구축된 오라클 데이터베이스의 일부 정보 > 엘라스틱서치
오라클(tblBook) > (복사) > 엘라스틱서치(book)
Logstash
어디에서(우리는 Oracle) 데이터를 받아(input) 어디론가(우리는 Elasticsearch) 데이터를 전달하는(output) 역할
input -> jdbc 사용
filter -> 전달받은 값을 가공 가능
output -> 주소, 인덱스, pk
a. ojdbc.jar > 우분투(WSL)에 복사하기
b. Logstash Config파일 생성하기 > "home/ubuntu/book.conf"
Logstash -> 우리 컴퓨터로 접근해야 한다.
다른 IP 주소 필요
WSL > 오라클 내부 IP 주소를
$ ip route show | grep -i default | awk '{print $3}'
c. 윈도우즈 방화벽 열기 > 인바운드 규칙(1521포트)
synonym -> 동의어 지정
stop -> 검색 제한 단어 지정
환경 확인 (MabaXterm)
a. Tomcat 동작 유무
b. Oracle 동작 유무
c. Elasticsearch
d. Kibana
e. Logstash
=> c~e 없어서 설치 진행
$ sudo apt-get update
$ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch |sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
$ echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
$ sudo apt-get update
$ sudo apt-get install elasticsearch
$ sudo apt-get install kibana
$ sudo apt-get install logstash
$ sudo systemctl enable elasticsearch
$ sudo systemctl enable kibana
$ sudo vi /etc/elasticsearch/elasticsearch.yml
$ sudo systemctl start elasticsearch
$ sudo vi /etc/kibana/kibana.yml
$ sudo systemctl start kibana
$ sudo systemctl status kibana
sudo systemctl daemon-reload
sudo systemctl stop elasticsearch
sudo systemctl start elasticsearch
.jar > 압축파일
.war > 웹 애플리케이션 압축파일(=zip)
ftp에 war파일 올리기
aws ubuntu에 nori설치
$ cd /usr/share/elasticsearch
$ sudo bin/elasticsearch-plugin install analysis-nori
$ sudo systemctl restart elasticsearch
$ sudo vi /etc/elasticsearch/synonym.txt
자바 => Java
$ sudo vi /etc/elasticsearch/stop.txt
이펙티브
$ sudo vi book.conf
input {
jdbc {
jdbc_driver_library => "/u01/app/oracle/product/11.2.0/xe/jdbc/lib/ojdbc6.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521/xe"
jdbc_user => "hr"
jdbc_password => "java1234"
statement => "select seq, title, image, discount, author, publisher from tblBook"
jdbc_validate_connection => "true"
}
}
filter {
mutate {
remove_field => ["@version", "@timestamp"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "book"
document_id => "%{seq}"
}
}
ubuntu에서 검색
$ sudo find /u01 -name ojdbc6.jar
/u01/app/oracle/product/11.2.0/xe/jdbc/lib/ojdbc6.jar
----
$ sudo vi /etc/elasticsearch/elasticsearch.yml
$ sudo systemctl restart elasticsearch
book.txt 파일 복붙
curl -X PUT "localhost:9200/book" -H "Content-Type: application/json" -d '{ "mappings" : { "properties" : { "author" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "discount" : { "type" : "long" }, "image" : { "type" : "keyword" }, "publisher" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "seq" : { "type" : "long" }, "title" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } }, "analyzer": "nori_token" } } }, "settings": { "analysis": { "analyzer": { "nori_token": { "type": "custom", "tokenizer": "nori_tokenizer", "filter": ["my_synonym", "my_stop"] } }, "filter": { "my_synonym": { "type": "synonym", "synonyms_path": "synonym.txt" }, "my_stop": { "type": "stop", "stopwords_path": "stop.txt" } } } } }'
$ sudo /usr/share/logstash/bin/logstash -f book.conf
=> 월~화요일
모든 작업 완료(배포 포함) > 수요일