11.2.3. API のクエリー


以下を使用して Red Hat Data Grid にクエリーできます。

  • Lucene または Hibernate Search クエリー。Red Hat Data Grid は Hibernate Search DSL を公開し、Lucene クエリーを生成します。1 つのノードで Lucene クエリーを実行したり、Red Hat Data Grid クラスターの複数のノードにクエリーをブロードキャストしたりできます。
  • Ickle クエリー。全文の拡張機能を含むカスタムの文字列ベースのクエリー言語です。

11.2.3.1. Hibernate Search

インデックス化を設定するために Hibernate Search アノテーションをサポートする以外に、他の Hibernate Search API を使用してキャッシュをクエリーすることもできます。

11.2.3.1.1. Lucene クエリーの実行

Lucene クエリーを直接実行するには、CacheQuery で作成してラップします。

import org.infinispan.query.Search;
import org.infinispan.query.SearchManager;
import org.apache.lucene.Query;


SearchManager searchManager = Search.getSearchManager(cache);
Query query = searchManager.buildQueryBuilderForClass(Book.class).get()
            .keyword().wildcard().onField("description").matching("*test*").createQuery();
CacheQuery<Book> cacheQuery = searchManager.getQuery(query);
Copy to Clipboard Toggle word wrap
11.2.3.1.2. Hibernate Search DSL の使用

Hibernate Search DSL を使用して Lucene クエリーを作成できます。以下に例を示します。

import org.infinispan.query.Search;
import org.infinispan.query.SearchManager;
import org.apache.lucene.search.Query;

Cache<String, Book> cache = ...

SearchManager searchManager = Search.getSearchManager(cache);

Query luceneQuery = searchManager
                         .buildQueryBuilderForClass(Book.class).get()
                         .range().onField("year").from(2005).to(2010)
                         .createQuery();

List<Object> results = searchManager.getQuery(luceneQuery).list();
Copy to Clipboard Toggle word wrap

この DSL のクエリー機能の詳細は、Hibernate Search マニュアル の関連セクションを参照してください。

11.2.3.1.4. 空間クエリー

Red Hat Data Grid は Spatial Queries にも対応しているため、距離、ジオメン、地理座標に基づいて全テキストと制限を組み合わせることができます。

たとえば、検索されるエンティティーで @Spatial アノテーションを使用し、@Latitude および @Longitude とともに使用します。

@Indexed
@Spatial
public class Restaurant {

      @Latitude
      private Double latitude;

      @Longitude
      private Double longitude;

      @Field(store = Store.YES)
      String name;

      // Getters, Setters and other members omitted

   }
Copy to Clipboard Toggle word wrap

空間クエリーを実行するには、Hibernate Search DSL を使用できます。

// Cache is configured as indexed
Cache<String, Restaurant> cache = ...

// Obtain the SearchManager
Searchmanager searchManager = Search.getSearchManager(cache);

// Build the Lucene Spatial Query
Query query = Search.getSearchManager(cache).buildQueryBuilderForClass(Restaurant.class).get()
          .spatial()
            .within( 2, Unit.KM )
              .ofLatitude( centerLatitude )
              .andLongitude( centerLongitude )
            .createQuery();

// Wrap in a cache Query
CacheQuery<Restaurant> cacheQuery = searchManager.getQuery(query);

List<Restaurant> nearBy = cacheQuery.list();
Copy to Clipboard Toggle word wrap

Hibernate Search マニュアルの詳細

11.2.3.1.5. IndexedQueryMode

インデックス化されたクエリーのクエリーモードを指定できます。IndexedQueryMode.BROADCAST を使用すると、クラスターの各ノードにクエリーをブロードキャストし、結果を取得し、呼び出し元に戻る前にそれらを組み合わせることができます。各ノードのローカル インデックスにはインデックス化されたデータのサブセットのみがあるため、共有されていない インデックスと併用することが適切です。

IndexedQueryMode.FETCH は呼び出し元でクエリーを実行します。クラスター全体のデータのインデックスすべてがローカルで使用できる場合、パフォーマンスは最適になります。そうでないと、このクエリーモードにはリモートノードからインデックスデータを取得することが必要になる場合があります。

IndexedQueryMode は、現時点で Lucene Queries および Ickle String クエリー(Red Hat Data Grid Query DSL なし)に対してサポートされます。

例:

CacheQuery<Person> broadcastQuery = Search.getSearchManager(cache).getQuery(new MatchAllDocsQuery(), IndexedQueryMode.BROADCAST);

List<Person> result = broadcastQuery.list();
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る