本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
OpenSearch Service 連線
您可以使用 AWS 適用於 Spark 的 Glue,在 Glue 4.0 和更新版本中讀取和寫入 OpenSearch Service AWS 中的資料表。您可以使用 OpenSearch 查詢定義要從 OpenSearch Service 讀取的內容。您可以使用 AWS Secrets Manager 透過 Glue 連線存放於 中的 HTTP AWS 基本身分驗證登入資料來連線至 OpenSearch Service。此功能與 OpenSearch Service Serverless 不相容。
如需有關 OpenSearch Service 的詳細資訊,請參閱 Amazon OpenSearch Service 文件。
設定 OpenSearch Service 連線
若要從 Glue AWS 連線至 OpenSearch Service,您需要在 AWS Secrets Manager 秘密中建立和存放您的 OpenSearch Service 登入資料,然後將該秘密與 OpenSearch Service AWS Glue 連線建立關聯。
先決條件:
-
依照 Amazon OpenSearch Service 文件中的說明,識別您想要讀取的網域端點
aosEndpoint
和連接埠aosPort
或建立資源。如需有關建立網域的詳細資訊,請參閱《Amazon OpenSearch Service 文件》中的建立和管理 Amazon OpenSearch Service 網域。Amazon OpenSearch Service 網域端點將會顯示下列預設格式:https://search-
domainName
-unstructuredIdContent
.region
.es.amazonaws.com。如需有關識別網域端點的詳細資訊,請參閱《Amazon OpenSearch Service 文件》中的建立和管理 Amazon OpenSearch Service 網域。識別或產生您網域的 HTTP 基本身分驗證憑證
aosUser
和aosPassword
。
設定 OpenSearch Service 的連線:
在 中 AWS Secrets Manager,使用您的 OpenSearch Service 登入資料建立秘密。若要在 Secrets Manager 中建立秘密,請遵循 AWS Secrets Manager 文件中建立 AWS Secrets Manager 秘密中提供的教學課程。建立機密之後,請保留機密名稱
secretName
,以便進行下一個步驟。-
在選取鍵/值組時,請使用
aosUser
值來建立USERNAME
金鑰對。 -
在選取鍵/值組時,請使用
aosPassword
值來建立PASSWORD
金鑰對。
-
在 AWS Glue 主控台中,依照中的步驟建立連線新增 AWS Glue 連線。建立連線後,請保留連線名稱
connectionName
,以供未來在 Glue AWS 中使用。選取連線類型時,請選取 OpenSearch Service。
選取網域端點時,請提供
aosEndpoint
。選取連接埠時,請提供
aosPort
。選取 AWS 機密時,請提供
secretName
。
建立 AWS Glue OpenSearch Service 連線後,您必須先執行下列步驟,才能執行 Glue AWS 任務:
授予與您的 Glue 任務相關聯的 IAM AWS 角色讀取
secretName
的許可。在您的 AWS Glue 任務組態中,提供
connectionName
作為其他網路連線。
從 OpenSearch Service 索引讀取
先決條件:
-
您想要讀取的 OpenSearch Service 索引
aosIndex
。 -
設定為提供身分驗證和網路位置資訊的 AWS Glue OpenSearch Service 連線。若要取得此功能,請完成上一個程序設定 OpenSearch Service 的連線中的步驟。您將需要 AWS Glue 連線的名稱
connectionName
。
此範例會從 Amazon OpenSearch Service 讀取索引。您將需要提供 pushdown
參數。
例如:
opensearch_read = glueContext.create_dynamic_frame.from_options( connection_type="opensearch", connection_options={ "connectionName": "
connectionName
", "opensearch.resource": "aosIndex
", "pushdown": "true", } )
您也可提供查詢字串,以篩選 DynamicFrame 中傳回的結果。您將需要設定 opensearch.query
。
opensearch.query
可接受 URL 查詢參數字串 queryString
或查詢 DSL JSON 物件 queryObject
。如需有關查詢 DSL 的詳細資訊,請參閱《OpenSearch 文件》中的查詢 DSL?q=
字首 (如同您會在完整 URL 中加上字首)。若要提供查詢 DSL 物件,請將 JSON 物件字串逸出後再進行。
例如:
queryObject = "{ "query": { "multi_match": { "query": "Sample", "fields": [ "sample" ] } } }" queryString = "?q=
queryString
" opensearch_read_query = glueContext.create_dynamic_frame.from_options( connection_type="opensearch", connection_options={ "connectionName": "connectionName
", "opensearch.resource": "aosIndex
", "opensearch.query": queryString, "pushdown": "true", } )
如需有關如何在其特定語法之外建立查詢的詳細資訊,請參閱《OpenSearch 文件》中的查詢字串語法
從包含陣列類型資料的 OpenSearch 集合讀取時,您必須使用 opensearch.read.field.as.array.include
參數指定方法呼叫中哪些欄位是陣列類型。
例如,在閱讀下列文件時,您會遇到 genre
和 actor
陣列欄位:
{ "_index": "movies", "_id": "2", "_version": 1, "_seq_no": 0, "_primary_term": 1, "found": true, "_source": { "director": "Frankenheimer, John", "genre": [ "Drama", "Mystery", "Thriller", "Crime" ], "year": 1962, "actor": [ "Lansbury, Angela", "Sinatra, Frank", "Leigh, Janet", "Harvey, Laurence", "Silva, Henry", "Frees, Paul", "Gregory, James", "Bissell, Whit", "McGiver, John", "Parrish, Leslie", "Edwards, James", "Flowers, Bess", "Dhiegh, Khigh", "Payne, Julie", "Kleeb, Helen", "Gray, Joe", "Nalder, Reggie", "Stevens, Bert", "Masters, Michael", "Lowell, Tom" ], "title": "The Manchurian Candidate" } }
在此情況下,您會在方法呼叫中包含那些欄位名稱。例如:
"opensearch.read.field.as.array.include": "genre,actor"
如果在文件結構中將陣列欄位巢狀化,請使用點標記法來表示:"genre,actor,foo.bar.baz"
。這將透過內含嵌入文件 bar
的 foo
嵌入文件,指定來源文件中包含的 baz
陣列。
寫入 OpenSearch Service 資料表
此範例會從現有的 DynamicFrame dynamicFrame
將資訊寫入 OpenSearch Service。如果索引已有資訊, AWS Glue 將從您的 DynamicFrame 附加資料。您將需要提供 pushdown
參數。
先決條件:
-
您想要寫入的 OpenSearch Service 資料表。您將需要資料表的識別資訊。我們稱此為
tableName
。 -
設定為提供身分驗證和網路位置資訊的 AWS Glue OpenSearch Service 連線。若要取得此功能,請完成上一個程序設定 OpenSearch Service 的連線中的步驟。您需要 Glue AWS 連線的名稱
connectionName
。
例如:
glueContext.write_dynamic_frame.from_options( frame=
dynamicFrame
, connection_type="opensearch", connection_options={ "connectionName": "connectionName
", "opensearch.resource": "aosIndex
", }, )
OpenSearch Service 連線選項參考
-
connectionName
– 必要。用於讀取/寫入。 AWS Glue OpenSearch Service 連線的名稱,設定為提供身分驗證和網路位置資訊給您的連線方法。 -
opensearch.resource
– 必要。用於讀取/寫入。有效值:OpenSearch 索引名稱。將會與您的連線方法互動的索引名稱。 -
opensearch.query
– 用於讀取。有效值:字串逸出的 JSON,或此字串以?
開頭時,URL 的搜尋部分。篩選讀取時應擷取之內容的 OpenSearch 查詢。如需有關使用此參數的詳細資訊,請參閱上一節 從 OpenSearch Service 索引讀取。 -
pushdown
:如有需要。用於讀取。有效值:布林值。指示 Spark 將讀取查詢傳遞給 OpenSearch,如此資料庫只會傳回相關的文件。 -
opensearch.read.field.as.array.include
:如果讀取的是陣列類型資料,則需要。用於讀取。有效值:以逗號分隔的欄位名稱清單。指定要從 OpenSearch 文件中以陣列形式讀取的欄位。如需有關使用此參數的詳細資訊,請參閱上一節 從 OpenSearch Service 索引讀取。