このトピックでは、オープンソースの Apache Solr の Java API オペレーションを呼び出して LindormSearch にアクセスする方法について説明し、例を示します。
前提条件
ホストに JDK 1.6 以降がインストールされていること。
クライアントの IP アドレスが Lindorm インスタンスのホワイトリストに追加されていること。詳細については、「ホワイトリストの設定」をご参照ください。
使用上の注意
Apache Solr API オペレーションを使用して、インターネット経由で LindormSearch にアクセスすることはできません。
手順 1: solr-solrj のダウンロード
Maven 依存関係を追加します。Maven リポジトリにプロジェクトを作成する場合は、pom.xml ファイルに solr-solrj 依存関係を追加します。例:
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>8.9.0</version>
</dependency>
手順 2: インスタンスの作成と初期化
HttpSolrClient モードを使用して LindormSearch にアクセスする場合は、テクニカルサポート(DingTalk ID: s0s3eg3)に連絡して、HTTP 経由の LindormSearch の VPC エンドポイント(httpUrl)を取得してください。次のコードは、HttpSolrClient モードを使用して LindormSearch にアクセスする方法の例を示しています。
String httpUrl = "http://***:****/solr/"; HttpSolrClient solrClient = new HttpSolrClient.Builder(httpUrl).build();
次のコードは、CloudSolrClient モードを使用して LindormSearch にアクセスする方法の例を示しています。
String zkHost = "ld-bp16cf8611a4r****-proxy-zk.lindorm.rds.aliyuncs.com:2***/solr" CloudSolrClient solrClient = new CloudSolrClient.Builder(Collections.singletonList(zkHost), Optional.empty()).build();
説明CloudSolrClient はスレッドセーフ性を確保し、アプリケーションの複数のスレッドが同じオブジェクトを共有できるようにします。
前の例では、zkHost は [solr 用 Lindormsearch エンドポイント] です。エンドポイントの取得方法の詳細については、「エンドポイントの表示」をご参照ください。
手順 3: LindormSearch へのアクセス
次のコードは、データの書き込み方法の例を示しています。
List docs = new ArrayList<>(); SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", 1); doc.addField("name_s", "bob"); doc.addField("age_i", 18); docs.add(doc); solrClient.add(docs);
次のコードは、データのクエリ方法の例を示しています。
SolrQuery solrQuery = new SolrQuery("name_s:bob"); QueryResponse response = solrClient.query("your_index", solrQuery); SolrDocumentList documentList = response.getResults(); for(SolrDocument doc : documentList){ String id = (String)doc.getFieldValue("id"); // 処理を実行する } solrClient.close();
説明データのクエリ方法を示すサンプルコードの詳細については、「サンプルコード」をご参照ください。