고양이발일기
ES를 사용해서 검색기능 추가하기 (2) 본문
반응형
Lamda console에 들어가서 설정해줍니다.
1. 함수 생성버튼을 눌러 함수를 생성합니다.
2. 함수 이름을 API gateway에서 설정해준 대로 설정해줍니다. 전 글에서는 search-es-lambda로 설정해두었으니 해당 이름으로 지정해줍니다.
언어는 파이썬을 선택했습니다.
3. lambda_function.py를 수정해줍니다.
import boto3
import json
import requests
from requests_aws4auth import AWS4Auth
region = '' # For example, us-west-1
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)
host = '' # The ES domain endpoint with https:// and a trailing slash
index = 'movies'
url = host + '/' + index + '/_search'
# Lambda execution starts here
def lambda_handler(event, context):
# Put the user query into the query DSL for more accurate search results.
# Note that certain fields are boosted (^).
query = {
"size": 25,
"query": {
"multi_match": {
"query": event['queryStringParameters']['query'],
"fields": ["fields.title^4", "fields.plot^2", "fields.actors", "fields.directors"]
}
}
}
# ES 6.x requires an explicit Content-Type header
headers = { "Content-Type": "application/json" }
# Make the signed HTTP request
r = requests.get(url, auth=awsauth, headers=headers, data=json.dumps(query))
# Create the response and add some extra content to support CORS
response = {
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": '*'
},
"isBase64Encoded": False
}
# Add the search results to the response
response['body'] = r.text
return response
4. 함수 개요에서 트리거를 추가해줍니다.
5. 전 글에서 생성하였던 API Gateway를 추가해줍니다.
6. ES console로 돌아가서 movie 도메인을 선택해줍니다.
7. 작업 > 액세스 정책 수정에 들어가서 코드를 바꿔줍니다.
어... 람다에 python package 어떻게 설치하는지 몰라서 실패했다 .. 헷 ... 다음에 다시 시도 해봐야겠어.. ^.^ ...
반응형
'개발 일기' 카테고리의 다른 글
css grid를 사용해서 리스트 정렬하기 (0) | 2021.08.26 |
---|---|
Elasticsearch 범위 쿼리 검색 (0) | 2021.08.16 |
ES를 사용해서 검색기능 추가하기 (1) (0) | 2021.08.10 |
Amazon ES에 테스트 데이터 업로드해보기 (1) | 2021.08.06 |
Elasticsearch 기초 및 데이터 CRUD (0) | 2021.08.05 |
Comments