Algolia API 객체 조회

Algolia API 객체 조회 (Get Objects)

검색 결과를 그대로 쓰지 않고, objectID를 정확히 알고 있는 레코드를 통째로 꺼내고 싶을 때가 있어요. 예를 들어 상세 페이지를 그리기 위해 objectID product-1을 가진 상품 레코드를 원한다든지, 이미 알고 있는 몇 개의 레코드를 index를 넘나들며 한 번에 모아야 할 때 말이죠. 그럴 때 쓰는 메서드가 Get objects예요. 요청 본문에 objectID 목록을 담아 POST /1/indexes/{indexName}/objects로 보내면, Algolia가 해당 레코드들을 특별한 검색 없이 그대로 돌려줘요.

이 메서드의 매력은 index를 여러 개 지정할 수 있다는 점이에요. 요청 하나로 서로 다른 index에 있는 레코드도 함께 가져올 수 있고, 응답은 요청한 순서 그대로 돌아와요. 그리고 attributesToRetrieve로 필요한 필드만 골라 담으면 응답 크기까지 줄일 수 있어요. 필요한 권한(ACL)은 search예요.

출처: 공식 문서

요청

POST /1/indexes/{indexName}/objects 형태로 호출해요. 실제 스펙 상으로는 와일드카드 경로인 /1/indexes/*/objects로 정의돼 있어서, 요청 본문의 각 항목에 indexName을 명시하면 index를 넘나들며 한 번에 조회할 수 있어요.

요청 본문은 requests 배열로 구성하고, 각 요청에는 조회할 레코드의 objectID 와 소속 indexName 이 필수로 들어가요. 특정 필드만 가져오고 싶다면 attributesToRetrieve에 필드 이름 목록을 넣어요. 이 필드를 지정하지 않으면 가져올 수 있는 모든 속성이 반환돼요.

{
  "requests": [
    {
      "attributesToRetrieve": [
        "author",
        "title",
        "content"
      ],
      "objectID": "product-1",
      "indexName": "books"
    }
  ]
}

인증은 두 개의 헤더로 해요. x-algolia-application-id에는 Algolia 애플리케이션 ID를, x-algolia-api-key에는 search ACL을 가진 API 키를 넣어요.

curl --request POST \
  --url 'https://algolia_application_id.algolia.net/1/indexes/*/objects' \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --header 'x-algolia-api-key: *** \
  --header 'x-algolia-application-id: ALGOLIA_APPLICATION_ID' \
  --data '
{
  "requests": [
    {
      "attributesToRetrieve": [
        "author",
        "title",
        "content"
      ],
      "objectID": "product-1",
      "indexName": "books"
    }
  ]
}
'

응답

응답은 results 배열로 오는데, 각 항목이 요청한 순서대로 정렬된 조회 결과 레코드예요. 요청한 objectID가 index에 존재하지 않으면 해당 항목은 null로 돌아와요.

{
  "results": [
    {
      "objectID": "product-1",
      "author": "Jane Austen",
      "title": "Pride and Prejudice",
      "content": "It is a truth universally acknowledged, ..."
    }
  ]
}

성공 시에는 2xx 상태가 돌아와요. index가 존재하지 않으면 404(IndexNotFound), API 키가 이 메서드를 허용하지 않으면 403(MethodNotAllowed), 기능이 활성화되지 않았으면 402(FeatureNotEnabled) 같은 에러 응답과 함께 message 프로퍼티가 내려와요.

필요한 권한 (ACL)

권한 설명
search 이 메서드를 호출하는 데 필요한 ACL

더 알아보기 (Learn more)