오늘은 Firebase의 검색서비스인,

algolia를 이용해서 검색을 하는 방법에 대해서 정리해 보도록 하겠습니다.


0. 왜 Alogolia가 필요한가


Firebase는 여러가지 장점이 있지만,

그 데이터베이스 서비스인 Firestore에서는 

검색을 위한 인덱싱을 지원하지 않습니다.

떡하니 유료서비스인 Algolia를 사용하라고 나와있는데요.

(물론 community등급인 무료 등급에서도 충분히 사용할 수 있지만 말이지요.)



1. Algolia 설치


가장 먼저해야 할 것은 역시 npm모듈 설치 입니다.


 npm install algoliasearch--save



2. Algolia Index 생성


Algolia가입은 구글아이디로 로그인해서 가입이 되기 때문에 정말 쉽네요.

가입 부분은 패스하도록 하겠습니다.

가입후, algolia에 로그인을 해 주고, 

좌측 메뉴화면에서 indices를 선택해 줍니다.

그럼, 아래와 같은 화면을 볼 수 있는데요.



당연히 create index를 선택해 줍니다.

유료 서비스라 그런지 뭔가 굉장히 쉽게 진행 되네요.

Create을 해주면 위와 같은 보드가 생성됩니다.


3. Create이나 Update할 경우 Algolia로 카피


이 작업은 firebase의 functions에서 진행합니다.

따라서 functions모듈을 require해 주어야 합니다.

아래와 같이 require해 줍니다.


const functions = require('firebase-functions');


그다음은 require한 functions를 이용해서 algloia를 initialize해 주어야 하는데요.

algolia를 initialize하기 위해서는, id와 api key를 algolia에서 가져와야 합니다.

algolia사이트의 application id와 admin api key 그리고 필요한 경우, Search_only Api Key(Pulic Key)를 api keys메뉴에서 복사해 오도록 하겠습니다.



이제 복사한 키를 firebase에게 알려주어야 하는데요.


공식문서를 보면, functions 의 config variable에 appid와 api 키가 저장되어 있다고 나옵니다.

functions의 config variable은 어디에 있는 걸까요?

이것은 공식문서의 write functions>environment configuration에 가보면 나와 있는데요.

Firebase의 cli에서 아래와 같은 명령어를 이용해서 key value값을 저장 가능하다고 합니다.


firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"


내 그럼 이것을 algolia의 그것으로 대체 하면 되겠네요.


firebase functions:config:set algolia.app_id="Application_ID" algolia.api_key="API Key"


위와 같이 CLI에서 입력해주면 아래와 같이 updated되었다고 잘 나옵니다.



config값을 제대로 받아오기 위해서는 functions를 deploy해야 합니다.

아래 명령어로 functions를 디플로이 해 줍니다.


firebase deploy --only functions


deploy가 끝나면 아래와 같이 결과를 볼 수 있는데요.

잘 set이 되었는지 확인하려면 아래와 같이 해주면 됩니다.

firebase functions:config:get

잘 set이 되었다면 이제 이 값에 접근해서, algolia를 initialize해 주어야 합니다.




그럼 이제 Algolia를 initialize해 보도록 하겠습니다.









+ Recent posts