概要
GlueからOpenSearch Serviceのドメインにドキュメントを格納する際に、ドキュメントIDを指定する方法が見当たらなかったため、記事を作成。
※なお、記事作成時点(2024/12)ではOpensearch Serverlessに対しては、Glue Connectionからは接続できない。
※誤りがある場合はご指摘いただけますと大変助かります。
前提
- Glue Connection作成済み
- Data source作成済み
- Opensearch service作成済み
- ドキュメントIDに指定したい値を持ったカラムが存在している(以下データ例の
doc_id参照)
データ例
| id | text | doc_id |
|---|---|---|
| 1 | 私は元気です | 0001 |
| 2 | 公園に散歩に行きます | 0002 |
| 3 | 平日は仕事です | 0003 |
操作
Glue Visual Studioから実行する場合
- Data targetにOpensearch Serviceを選択する。
- Custom Amazon OpenSearch Service PropertiesのKeyに
opensearch.mapping.id、Valueに「前提」で記載した、ドキュメントIDに指定したい値を持ったカラム名(今回だとdoc_id)を入力する。 - ジョブ実行すると、格納されたデータの
_idに、指定したドキュメントIDが設定されていることが確認できる。
※ID指定で上書きも可能
スクリプトエディタから実行する場合(dynamicFrame使用)
from_options内のconnection_optionsに"opensearch.mapping.id": "doc_id"を入力する
XXX_node = glueContext.write_dynamic_frame.from_options(
frame=YYY_node,
connection_type="opensearch",
connection_options={
"opensearch.mapping.id": "doc_id",
その他の設定
}
)