본문 바로가기

카테고리 없음

mysql과 elasticsearch sync하기

1. 필요한 라이브러리 설치

django-elasticsearch-dsl과 mysqlclient를 설치했다.

pip install django-elasticsearch-dsl django-elasticsearch-dsl-drf mysqlclient

 

2. Elasticserach 설정 및 도커 이미지 다운로드

Elasticsearch 인스턴스를 설치하고 실행해야 한다.

로컬 환경에서 테스트한다면, 공식 Elasticsearch Docker 이미지를 사용할 수 있다.

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.0
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.0

 

터미널에 아래 명령어를 입력해 Elasticserach Docker 이미지를 다운로드한다.

 

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.0

 

Docker 이미지는 컨테이너를 생성하는 데 필요한 모든 파일과 설정을 포함한 불변의 파일 시스템 스냅샷이다.

이미지는 읽기 전용 템플릿이며, 컨테이너는 이 이미지의 실행 인스턴스이다. 즉, 이미지는 앱을 실행하는 데 필요한 모든 것을 담고 있고, 컨테이너는 실제로 실행 중인 앱이라고 보면 된다.

 

다운로드한 이미지를 기반으로 컨테이너를 실행한다.

 

http://localhost:9200/"로 접속하여 컨테이너가 성공적으로 실행되었는지 확인한다.

서버의 기본 정보를 JSON 형태로 반환한 결과가 나타날 것이다.

 

 

MySQL에 csv 파일 넣기

mysql workbench -> schema 생성하기 -> table 배너 마우스 오른쪽 클릭으로 

 

elasticsearch 초기 보안설정

C:\elasticsearch\elasticsearch-8.14.1-windows-x86_64\elasticsearch-8.14.1\bin>elasticsearch-reset-password -u elastic
warning: ignoring JAVA_HOME=C:\Program Files\Java\jdk-17.0.4.1; using bundled JDK
This tool will reset the password of the [elastic] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y


Password for the [elastic] user successfully reset.
New value: CvqzzSwdo3mKDB9rPcY7

C:\elasticsearch\elasticsearch-8.14.1-windows-x86_64\elasticsearch-8.14.1\bin>

 

 

MySQL 서버 구동

C:\Windows\system32>cd C:\Program Files\MySQL\MySQL Server 8.0\bin

C:\Program Files\MySQL\MySQL Server 8.0\bin>net start mysql
요청한 서비스가 이미 시작되었습니다.

NET HELPMSG 2182을(를) 입력하면 도움말을 더 볼 수 있습니다.

 

 

Django와 mySQL 연동 

https://hae-ong.tistory.com/25

 

Django와 MySQL 연동하기

파일구조 프로젝트명 > 앱> templates > index.html 기존의 데이터베이스를 연결하는 법 1. 커넥터 설치 Python에서 MySQL 서버와 통신을 할 수 있게 해주는 파이썬 용 데이터베이서 커넥터(Databaser Connector)

hae-ong.tistory.com

 

 

 

windows에 mecab 설치 (elasticserach에서 사용할 한국어 형태소분석기)

https://wonhwa.tistory.com/49

 

Windows에 MeCab 설치하기(feat. python, R)

안녕하세요. 형태소 분석기 중 하나인 MeCab을 Linux 환경에서만 사용 가능한 줄 알았는데 Windows에서도 사용할 수 있는 방법이 있어 설치 방법을 공유하고자 합니다. python, R 각각의 설치 방법을 알

wonhwa.tistory.com

 

 

 

[ settings.py ]

프로젝트 전체 설정 관리 (DB, App 등록, middleWare, 템플릿 경로, 보안설정 등)

특히 데이터베이스와 Elasticserach의 설정 정보가 중요.

 

[ __init__.py ]

앱 기본 설정 지정. 'Apps.py'에서 정의된 앱 설정 클래스를 Django는 이 파일을 통해 앱의 초기 설정을 로드함.

 

[ apps.py ]

앱의 설정을 관리 및 앱이 준비되었을 때 초기 작업을 수행함.

-> MySQL에서 기사 내용 로드하고 이를 사용해 tf-idf 벡터라이저 초기화

-> 이 파일은 앱 시작시 한 번 실행되어 DB에서 데이터 가져오고, tf-idf 벡터라이저 준비

 

[ models.py ]

MySQL 데이터베이스와의 상호작용을 위한 모델을 정의함. 기사의 데이터 모델을 Django ORM을 통해 정의함.

아래 명령어로 DB 스키마 가져와서 models.py에 붙여넣기

python manage.py inspectdb

 

 

[ search.py ]

Elasticsearch와의 연동을 관리하고, MySQL에서 로드한 데이터를 Elasticsearch에 인덱싱함.

또한 tf-idf를 사용해 텍스트 데이터의 벡터를 생성함.

-> 즉, RDB에서 데이터 로드하고 Elasticserach 인덱스를 생성/업데이트하는데 사용함.

 

[ urls.py ]

앱의 url 경로를 정의함. 사용자의 HTTP 요청을 처리할 뷰 함수에 연결해줌.

즉, 사용자의 웹 요청을 'views.py'의 적절한 뷰 함수로 라우팅한다.

 

[ views.py ]

사용자의 입력을 받아 elasticserach를 통해 유사 기사를 검색하고, 결과를 웹페이지에 반환한다.

 

 

실행 흐름

1. 사용자가 웹페이지를 통해 특정 텍스트를 입력한다.

2. views.py의 search_articles 함수는 사용자의 입력을 받아 elasticsearch에서 유사 기사를 검색한다.

3. 검색 결과가 사용자에게 웹페이지를 통해 반환된다. 결과에는 기사의 title, content, link가 포함된다.