Java を使用してデータを管理および検索するために BLOB インデックス タグを使用する

この記事では、Java 用 Azure Storage クライアント ライブラリを使用して、BLOB インデックス タグを使用してデータを管理および検索する方法について説明します。

前提条件

  • この記事では、Java 用の Azure Blob Storage クライアント ライブラリを操作するようにプロジェクトが既に設定されていることを前提としています。 パッケージのインストール、import ディレクティブの追加、認可されたクライアント オブジェクトの作成など、プロジェクトの設定については、「Azure Storage と Java での作業開始」を参照してください。
  • 認可メカニズムには、BLOB インデックス タグを操作するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。

BLOB インデックス タグについて

キーと値のタグ属性を使用して、BLOB インデックス タグによってストレージ アカウント内のデータが分類されます。 これらのタグには自動的にインデックスが付けられ、検索可能な多次元インデックスとして公開されるため、データを簡単に見つけることができます。 この記事では、BLOB インデックス タグを使用してデータを設定、取得、および検索する方法について説明します。

階層型名前空間が有効になっているストレージ アカウントでは、BLOB インデックス タグはサポートされていません。 BLOB インデックス タグ機能と既知の問題および制限について詳しくは、「BLOB インデックス タグを使用して Azure BLOB データを管理および検索する」を参照してください。

タグを設定する

次のいずれかのメカニズムを使用してコードが BLOB データへのアクセスを認可されている場合は、インデックス タグを設定できます。

詳細については、BLOB インデックス タグの設定を参照してください。

次のメソッドを使用してタグを設定できます。

このメソッドで指定したタグは、既存のタグを置き換えます。 古い値を保持する必要がある場合は、ダウンロードしてこのメソッドの呼び出しに含める必要があります。 次の例はタグの設定方法を示しています。

public void setBlobTags(BlobClient blobClient) {
    // Get any existing tags for the blob if they need to be preserved
    Map<String, String> tags = blobClient.getTags();

    // Add or modify tags
    tags.put("Sealed", "false");
    tags.put("Content", "image");
    tags.put("Date", "2022-01-01");

    // setTags will replace existing tags with the map entries we pass in
    blobClient.setTags(tags);
}

空の Map オブジェクトを setTags メソッドに渡すことによって、すべてのタグを削除できます。

public void clearBlobTags(BlobClient blobClient) {
    Map<String, String> tags = new HashMap<String, String>();
    blobClient.setTags(tags);
}

タグを取得する

次のいずれかのメカニズムを使用してコードが BLOB データへのアクセスを認可されている場合は、インデックス タグを取得できます。

詳細については、「BLOB インデックス タグの取得と一覧表示」を参照してください。

次のメソッドを使用してタグを取得できます。

次の例は、BLOB のタグを取得して反復処理する方法を示しています。

public void getBlobTags(BlobClient blobClient) {
    Map<String, String> tags = blobClient.getTags();

    System.out.println("Blob tags:");
    for (Map.Entry<String, String> entry : tags.entrySet())
        System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

BLOB インデックス タグを使用してデータをフィルター処理および検索する

次のいずれかのメカニズムを使用して、コードが BLOB データへのアクセスを認可されている場合は、インデックス タグを使用してデータを検索し、フィルター処理できます。

詳細については、「BLOB インデックス タグを使用したデータの検索」を参照してください。

Note

インデックス タグを使用して以前のバージョンを取得することはできません。 以前のバージョンのタグは BLOB インデックス エンジンに渡されません。 詳細については、条件と既知の問題に関するページを参照してください。

次のメソッドを使用してデータを検索できます。

次の例では、画像としてタグ付けされたすべての BLOB を検索します。

public void findBlobsByTag(BlobContainerClient blobContainerClient) {
    String query = "\"Content\"='image'";

    blobContainerClient.findBlobsByTags(query)
            .forEach(blob -> System.out.printf("Name: %s%n", blob.getName()));
}

リソース

Java 用 Azure Blob Storage クライアント ライブラリを使用して、インデックス タグを使用したデータの管理と検索を行う方法の詳細については、次のリソースを参照してください。

REST API の操作

Azure SDK for Java には Azure REST API に基づき構築されたライブラリが含まれるため、使い慣れた Java パラダイムを通じて REST API 操作を実施できます。 BLOB インデックス タグを管理および使用するためのクライアント ライブラリ メソッドは、次の REST API 操作を使用します。

コード サンプル

クライアント ライブラリのリソース

関連項目