[python] Flask와 Elasticsearch를 이용한 검색 기능 구현 방법

본 문서에서는 Python의 Flask 웹 프레임워크와 Elasticsearch를 이용하여 검색 기능을 구현하는 방법을 소개하고자 한다.

목차

  1. Flask 앱 설정
  2. Elasticsearch 연동
  3. 검색 기능 구현

Flask 앱 설정

Flask 웹 애플리케이션을 구성하려면 먼저 필요한 패키지를 설치해야 한다. 이를 위해 간단한 가상 환경을 만들고 Flask 및 관련 패키지를 설치하는 것이 좋다.

$ python -m venv myenv
$ source myenv/bin/activate
(myenv) $ pip install Flask elasticsearch

또한, Flask 앱을 생성하고 기본 라우트를 설정하여 기본적인 웹 페이지가 표시되는지 확인해야 한다.

# app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World'

if __name__ == '__main__':
    app.run(debug=True)

위와 같이 작성한 후 python app.py로 앱을 실행하고 브라우저에서 http://127.0.0.1:5000로 접속하여 결과를 확인한다.

Elasticsearch 연동

Elasticsearch를 설치하고 실행한 후, Python에서 Elasticsearch 클라이언트를 사용하여 연동한다. elasticsearch 패키지를 사용하여 Elasticsearch와 연동한다.

from elasticsearch import Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

검색 기능 구현

검색 기능은 사용자가 입력한 검색어에 대해 Elasticsearch에서 데이터를 검색하고 결과를 반환하는 과정을 포함한다. 아래는 Flask에서 사용자로부터 검색어를 입력받아 Elasticsearch에 검색을 요청하고 결과를 반환하는 코드이다.

from flask import request

@app.route('/search')
def search():
    query = request.args.get('q')
    res = es.search(index='my_index', body={'query': {'match': {'content': query}}})
    # 검색 결과를 가공하여 반환하는 코드
    return process_search_results(res)

위 코드에서 my_index는 Elasticsearch에 색인화된 데이터의 인덱스 이름으로 변경되어야 한다.

이와 같이 Flask와 Elasticsearch를 이용하여 간단한 검색 기능을 구현할 수 있다.

위 문서는 Python의 Flask와 Elasticsearch를 이용하여 검색 기능을 구현하는 방법에 대해 알아보았다.

참고 자료