クライアントアプリケーションからの呼び出し方
ここでは、Apache Solrインスタンスを外部から利用する方法について説明します。
このページの項目
Apache Solr API
KandaSearchの各UIを利用することで、作成したApache Solrインスタンスへ、簡単にドキュメントを登録したり検索したりできます。
しかしながら、実際の検索システムの構築にあたっては、ドキュメントを登録するための専用サーバーが存在していたり、検索利用者から簡単便利に検索してもらうための画面インターフェースを備えたクライアントアプリケーションサーバーが必要になります。
それらのサーバーからKandaSearch上のApache Solrインスタンスを使うためには、Apache Solr APIを利用します。 Apache Solr APIはRESTライクなAPIで、これを利用すれば、データの追加、更新、削除ができます。検索APIを利用すれば、キーワード検索、セマンティック検索、ファセット、ハイライトなど、様々な検索ができます。
APIを呼ぶ側のクライアントアプリケーションは、HTTPリクエストを送信し、HTTPレスポンスを受信・解析できれば、プログラミング言語の種類は問いません。Javaはもちろん、Python、Ruby、PHP、Go、C/C++、C# など、多くの言語で実装が可能です。
Apache Solr APIについては、Apache Solrの公式サイトに詳しく掲載されています。
事前準備
KandaSearchのApache Solrインスタンスは、デフォルトでは外部からの接続をすべて拒否します。
そのため、Apache Solr APIを送信するPCやサーバーの接続元IPアドレスをCIDRの形式で事前に登録しておく必要があります。
接続元IPアドレスの設定は、Apache Solrインスタンスの作成時、または、作成したインスタンスのインスタンスビューの左サイドメニューより「設定」選択し「許可されたIPアドレス」セクションで設定します。
「許可されたIPアドレス」の設定が完了したら、PCやサーバーから接続できるか確認します。
PCの場合は、ブラウザからApache Solr Admin UI(URLはインスタンスのオーバービューに表示)へアクセスできるか確認します。
サーバーの場合は、wgetコマンドでApache Solr Admin UIからの応答があるかなどで確認します。
補足説明
- 許可設定のうむにかかわらず、KandaSearchのApache Solrインスタンスへpingは通りません。
- 接続できないときは、ファイアウォール等でSolrへの接続で使用するポート番号(TCP 443)が開いているかどうか、Proxyの有無などをご確認ください。
APIの使用例
cURLコマンドを使ったApache Solr APIの使用例をいくつかご紹介します。
実行環境
- Communityプランのインスタンスを使用
- サブドメイン名は projecttest-test-com(下記から自動生成)
- プロジェクト名は projecttest
- インスタンス名は test-com
- コレクション名は livedoornews
- フィールドは id(ファイル名)、title(タイトル)、body(本文)など
キーワード検索(キーワード指定なし)
curl 'https://projecttest-test-com.c.kandasearch.com/solr/livedoornews/select?q=*:*&rows=10&fl=id,score&defType=lucene'
キーワード検索(キーワードに コンピューター と指定)
curl 'https://projecttest-test-com.c.kandasearch.com/solr/livedoornews/select?q=%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC&rows=10&fl=id,score,title,body&Type=lucene'
インデクシング(ローカルのlivedoor.jsonというJSONファイル使用)
curl -X POST 'https://projecttest-test-com.c.kandasearch.com/solr/livedoornews/update?commit=true&indent=true' --data-binary @livedoor2.json -H 'Content-Type: text/json'
ドキュメントの全削除
curl -X POST 'https://projecttest-test-com.c.kandasearch.com/solr/livedoornews/update?commit=true' -H 'Content-type:text/json;charset=utf-8' --data-binary '{"delete":{"query":"*:*"}}'
サンプルWebアプリケーション
KandaSearchでは、ご利用中のApache Solrインスタンス環境に合わせて調整を行ったサンプルWebアプリケーションを提供しています。
アプリケーションはJava(Spring Bootを利用)で書かれており、インスタンスビューの「検索」からダウンロードできます。
このソースコードを元に、Webアプリケーションからインスタンスへのアクセス手法を理解したり、デザインなどの調整を行ったりすることで、効率よくWebアプリケーションの開発を進められます。
MacやWSLなどのローカルPC上でのWEBアプリケーションの利用方法は以下の通りです。
なお、このアプリケーションを実行するにはjava 11以上の実行環境が必要です。また、現在、セマンティック検索はサポートしておりません。
- KandaSearchへログインします。
- プロジェクトの一覧画面より、対象のプロジェクト名をクリックします。(プロジェクトの一覧を表示させるには、画面左上のKandaSearchのロゴをクリックします)
- プロジェクトのオーバービューより対象のインスタンス名をクリックします。
- インスタンスビューの左サイドメニューより「検索」をクリックします。
- 検索画面の左ペインでコレクション、ハンドラ、ユニークキー、表示するフィールド名などを指定します。(「検索」をクリックし、エラーが起きないか確認します)
- 「WEBアプリダウンロード(JAVA)」をクリックし、アプリケーションをダウンロードします。
- ダウンロードしたzipファイルを解凍し、javaを実行できる環境にコピーします。
- 解凍したフォルダの中にwarファイルがありますので、「 java -jar ks-search-client-1.1.4.war 」のような形式でwarファイルを指定し実行します。
- 例えば、Macのターミナルからjavaを実行した場合は、Chromeなどのブラウザから「 http://localhost:9090 」へアクセスします。
- JavaアプリケーションがKandaSearch内のApache SolrインスタンスへHTTPリクエストを送信し、検索結果をHTTPレスポンスで取得し、ブラウザ上に表示します。
補足事項
- javaプログラムを停止するには、Crtl+Cを入力します。
- このアプリケーションが使用するポート番号は、デフォルトではTCP 9090です。
- 詳細はzip内に同梱されているREADME.mdをご覧ください。