BigQuery 검색 색인을 사용하면 GoogleSQL을 사용하여 테이블 스키마를 미리 알 필요 없이 구조화되지 않은 텍스트 및 반구조화된 JSON 데이터에 숨겨진 고유한 데이터 요소를 효율적으로 찾을 수 있습니다.
BigQuery는 검색 색인을 사용하여 플랫폼 하나에서 강력한 열 저장과 텍스트 검색을 제공하므로 이를 통해 개별 데이터 행을 찾아야 할 때 효율적으로 행을 조회할 수 있습니다. 일반적인 사용 사례는 로그 분석입니다. 예를 들어 개인정보 보호법(GDPR) 보고를 위해 사용자와 연결된 데이터 행을 식별하거나 텍스트 페이로드에서 특정 오류 코드를 찾으려 할 수 있습니다.
BigQuery는 색인을 저장하고 관리하므로 BigQuery에서 데이터를 사용할 수 있게 되면 SEARCH 함수 또는 다른 연산자 및 함수(예: 같음(=), IN 또는 LIKE 연산자와 특정 문자열 및 JSON 함수)를 사용하여 즉시 검색할 수 있습니다. 검색을 최적화하려면 권장사항을 읽어보세요.
조직에서 색인 생성된 테이블의 총 크기가 해당 리전의 한도 미만인 경우 검색 색인을 빌드하고 새로고침하는 데 필요한 처리에 요금이 청구되지 않습니다. 이 한도를 넘어서 색인 생성을 지원하려면 색인 관리 작업을 처리하기 위한 자체 예약을 제공해야 합니다.
검색 색인이 활성 상태면 스토리지 비용이 발생합니다.
색인 스토리지 크기는 INFORMATION_SCHEMA.SEARCH_INDEXES 뷰에서 찾을 수 있습니다.
역할 및 권한
검색 색인을 만들려면 색인을 만들 테이블에 대한 bigquery.tables.createIndex IAM 권한이 필요합니다. 검색 색인을 삭제하려면 bigquery.tables.deleteIndex 권한이 필요합니다. 다음과 같은 사전 정의된 각 IAM 역할에는 검색 색인을 사용하는 데 필요한 권한이 포함되어 있습니다.
BigQuery 데이터 소유자(roles/bigquery.dataOwner)
BigQuery 데이터 편집자(roles/bigquery.dataEditor)
BigQuery 관리자(roles/bigquery.admin)
제한사항
뷰 또는 구체화된 뷰에서 직접 검색 색인을 만들 수 없지만 색인이 생성된 테이블 뷰에서 SEARCH 함수를 호출하면 기본 검색 색인을 활용할 수 있습니다.
검색 색인을 만든 후 테이블의 이름을 변경하면 색인이 무효화됩니다.
SEARCH 함수는 점 조회를 위해 설계되었습니다. 퍼지 검색, 오타 수정, 와일드 카드, 기타 유형의 문서 검색은 제공되지 않습니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-08-26(UTC)"],[[["\u003cp\u003eBigQuery search indexes enable efficient searching of unstructured text and semi-structured JSON data using GoogleSQL, even without prior knowledge of table schemas.\u003c/p\u003e\n"],["\u003cp\u003eThese indexes facilitate row lookups, making them useful for tasks such as log analytics, GDPR compliance, and identifying specific error codes.\u003c/p\u003e\n"],["\u003cp\u003eBigQuery manages the indexes, allowing for immediate data retrieval through the \u003ccode\u003eSEARCH\u003c/code\u003e function and other operators like \u003ccode\u003e=\u003c/code\u003e, \u003ccode\u003eIN\u003c/code\u003e, or \u003ccode\u003eLIKE\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eUsing search indexes for indexed tables below a certain size limit in your region incurs no processing costs for building or refreshing the index, however storage costs for active indexes do apply.\u003c/p\u003e\n"],["\u003cp\u003eSearch indexes have limitations, they cannot be directly applied to views or materialized views, they do not allow fuzzy searching or typo correction, and aren't utilized during DML statements on the indexed table itself, among other limitations.\u003c/p\u003e\n"]]],[],null,["# Introduction to search in BigQuery\n==================================\n\n| **Note:** This feature may not be available when using reservations that are created with certain BigQuery editions. For more information about which features are enabled in each edition, see [Introduction to\n| BigQuery editions](/bigquery/docs/editions-intro).\n\nBigQuery search indexes let you use GoogleSQL to\nefficiently find\nunique data elements that are buried in unstructured text and semi-structured\nJSON data, without having to know the table schemas in advance.\n\nWith search indexes, BigQuery provides a powerful columnar store\nand text search in one platform, enabling efficient row lookups when you need to\nfind individual rows of data. A common use case is log analytics. For example,\nyou might want to identify the rows of data associated with a user for General\nData Protection Regulation (GDPR) reporting, or to find specific error codes in\na text payload.\n\nBigQuery stores and manages your indexes, so that when data becomes\navailable in BigQuery, you can immediately retrieve it with the\n[`SEARCH` function](/bigquery/docs/reference/standard-sql/search_functions#search)\nor [other operators and functions](/bigquery/docs/search#operator_and_function_optimization),\nsuch as the equal (`=`), `IN`, or `LIKE` operators and certain string and JSON\nfunctions. To optimize your searches, read about\n[best practices](/bigquery/docs/search#best_practices).\n| **Important:** Join the [Search discussion group](https://groups.google.com/g/bq-search) to post questions and comments, and to follow the latest updates.\n\nUse cases\n---------\n\nBigQuery search indexes help you perform the following tasks:\n\n- Search system, network, or application logs stored in BigQuery tables.\n- Identify data elements for deletion to comply with regulatory processes.\n- Support developer troubleshooting.\n- Perform security audits.\n- Create a dashboard that requires highly selective search filters.\n- Search pre-processed data for exact matches.\n\nFor more information, see\n[Create a search index](/bigquery/docs/search-index) and\n[Search with an index](/bigquery/docs/search).\n\nPricing\n-------\n\nThere is no charge for the processing required to build and refresh your search\nindexes when the total size of indexed tables in your organization is below\nyour region's\n[limit](/bigquery/quotas#index_limits). To support indexing beyond this limit,\nyou need to\n[provide your own reservation](/bigquery/docs/search-index#use_your_own_reservation)\nfor handling the index-management jobs.\nSearch indexes incur storage costs when they are active.\nYou can find the index storage size in the\n[`INFORMATION_SCHEMA.SEARCH_INDEXES` view](/bigquery/docs/information-schema-indexes).\n\nRoles and permissions\n---------------------\n\nTo create a search index, you need the\n[`bigquery.tables.createIndex` IAM permission](/bigquery/docs/access-control#bq-permissions)\non the table where you're creating the index. To drop a search index, you need\nthe `bigquery.tables.deleteIndex` permission. Each of the following predefined\nIAM roles includes the permissions that you need to work with\nsearch indexes:\n\n- BigQuery Data Owner (`roles/bigquery.dataOwner`)\n- BigQuery Data Editor (`roles/bigquery.dataEditor`)\n- BigQuery Admin (`roles/bigquery.admin`)\n\nLimitations\n-----------\n\n- You can't create a search index directly on a view or materialized view, but calling the [`SEARCH` function](/bigquery/docs/reference/standard-sql/search_functions#search) on a view of an indexed table makes use of the underlying search index.\n- You can't create a search index on an external table.\n- If you rename a table after you create a search index on it, the index becomes invalid.\n- The `SEARCH` function is designed for point lookups. Fuzzy searching, typo correction, wildcards, and other types of document searches are not available.\n- If the search index is not yet at 100% coverage, you are still charged for all index storage that is reported in the [`INFORMATION_SCHEMA.SEARCH_INDEXES` view](/bigquery/docs/information-schema-indexes).\n- Queries that use the `SEARCH` function or are optimized by search indexes are not accelerated by [BigQuery BI Engine](/bigquery/docs/bi-engine-intro).\n- Search indexes are not used when the indexed table is modified by a DML\n statement, but they can be used when the predicate that is optimizable by\n search indexes is part of a subquery in a DML statement.\n\n - A search index is not used in the following query:\n\n ```googlesql\n DELETE FROM my_dataset.indexed_table\n WHERE SEARCH(user_id, '123');\n ```\n - A search index can be used in the following query:\n\n ```googlesql\n DELETE FROM my_dataset.other_table\n WHERE\n user_id IN (\n SELECT user_id\n FROM my_dataset.indexed_table\n WHERE SEARCH(user_id, '123')\n );\n ```\n- Search indexes are not used when the query references [Materialized Views](/bigquery/docs/materialized-views-intro).\n\n- Search indexes are not used in a [multi-statement transaction query](/bigquery/docs/transactions).\n\n- Search indexes are not used in a [time-travel query](/bigquery/docs/time-travel).\n\nWhat's next\n-----------\n\n- Learn more about [creating a search index](/bigquery/docs/search-index).\n- Learn more about [searching in a table with a search index](/bigquery/docs/search)."]]