[python] FastAPI와 Elasticsearch의 연동

FastAPI는 빠르고 현대적인 웹 애플리케이션을 빌드하기 위한 웹 프레임워크입니다. Elasticsearch는 고성능의 분산 검색 및 분석 엔진으로, 대량의 데이터를 빠르게 색인하고 검색할 수 있습니다. 이 블로그 포스트에서는 FastAPI와 Elasticsearch를 연동하여 데이터를 색인하고 검색하는 방법에 대해 알아보겠습니다.

Elasticsearch 설정

먼저 Elasticsearch를 설치하고 실행해야 합니다. 이후 인덱스를 생성하고 데이터를 색인합니다.

from elasticsearch import Elasticsearch

# Elasticsearch 연결
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

# 인덱스 생성
es.indices.create(index='blog_posts', ignore=400)

# 데이터 색인
doc = {
    'author': 'John Doe',
    'text': 'Lorem ipsum dolor sit amet',
    'timestamp': datetime.now()
}
es.index(index='blog_posts', id=1, body=doc)

FastAPI와 연동

FastAPI에서는 Elasticsearch 클라이언트를 사용하여 Elasticsearch와 통신합니다.

from fastapi import FastAPI
from elasticsearch import Elasticsearch

app = FastAPI()

# Elasticsearch 연결
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

@app.get("/search/{query}")
def search(query: str):
    res = es.search(index="blog_posts", body={"query": {"match": {'text': query}}})
    return res['hits']['hits']

마치며

이제 FastAPI와 Elasticsearch를 연동하여 데이터를 색인하고 검색하는 방법에 대해 알아보았습니다. 이를 통해 빠르고 효율적인 웹 애플리케이션을 개발할 수 있습니다.

더 많은 세부 내용은 FastAPI 공식 문서Elasticsearch 공식 문서를 참고하세요.

참고 문헌: