이전 글에서 nori 토크 나이저 설정 파일에 대한 설명을 하였다. 여기서는 이를 logstash conf 파일에 설정하고 elasticsearch에 output 한 데이터를 kibana를 통해 확인하고 django에서 직접 사용해 보겠다.
먼저 /etc/conf.d 에 설정 파일을 만들어 준다. 현재 jdbc를 사용하여 rds와 연결된 상태인데 여기서 output 설정을 조금 바꾸어 주면 된다.
/etc/logstash/conf.d/partner.conf
input {
jdbc {
jdbc_driver_library => "/etc/logstash/postgresql-42.2.23.jar"
jdbc_driver_class => "org.postgresql.Driver"
jdbc_connection_string => "jdbc:postgresql://rds.url"
jdbc_user => "user"
jdbc_password => "password"
schedule => "*/2 * * * *"
statement => "select * from account_partner"
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "partner-1"
template=>"/etc/logstash/partner_template.json"
template_name=>"partner-1"
template_overwrite=>true
document_id=>"%{id}"
ilm_enabled => false
}
# stdout { codec => rubydebug }
}
ouput에서는 전에 만든 template의 경로, template 명, 덮어쓰기 등의 설정을 해주면 된다. 설정을 완료하고 logstash를 실행하고 /var/log/logstash 에서 tail -f로 log 파일을 확인해보면 schedule에 따라 데이터를 업데이트해주는 것을 확인할 수 있다. kibana를 실행하고 index management를 확인해 보면
데이터가 들어간 것을 확인할 수 있고 index에 들어가 settings와 mappings를 확인해 보면
![]() |
![]() |
다음과 같이 잘 들어간 것을 확인할 수 있다. 이제 elasticsearch에서 데이터 검색 시 partner라는 모델의 history 등의 필드에서 한글 검색 시 원하는 데이터를 검색하여 받아 올 수 있게 된 것이다. 이제 django에 직접 적용하여 볼 것이다. 여기서는 elastcisearch package를 install 하고 localhost:9200에 연결하여 데이터를 받아올 것이다.
pip install elasticsearch
drf의 viewset list함수를 오버라이드 하여 사용할 것이다.
def list(self, request, *args, **kwargs):
es = Elasticsearch("http://localhost:9200", timeout=100, max_retries=10, retry_on_timeout=True)
partner = es.search(
index='partner-1',
body={
'size':10000,
"query": {
"multi_match": {
"query": searchQ,
"fields": [
"name.english_field",
"name.korean_field",
"info_company.english_field",
"info_company.korean_field",
"history.english_field",
"history.korean_field",
"region.english_field",
"region.korean_field",
]
}
}
})
print(partner) # query : searchQ에 원하는 검색키워드를 넣어주고 검색한다.
search 파라미터로 들어온 검색어 키워드를 searchQ 변수에 담아주고 elasticsearch에 접속하여 template에 설정한 english_field, korean_field를 설정하여주면 검색 키워드를 각 필드에서 검색하여 partner 변수에 데이터를 담아준다.
'Elasticsearch' 카테고리의 다른 글
Elasticsearch + nori 한글 형태소 분석기로 데이터 검색하기 # 1 (0) | 2021.08.27 |
---|---|
ubuntu 18.04 에 ELK 설치하기 (0) | 2021.08.26 |
댓글