クライアントアプリケーションからの呼び出し方

ここでは、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以上の実行環境が必要です。また、現在、セマンティック検索はサポートしておりません。

  1. KandaSearchへログインします。
  2. プロジェクトの一覧画面より、対象のプロジェクト名をクリックします。(プロジェクトの一覧を表示させるには、画面左上のKandaSearchのロゴをクリックします)
  3. プロジェクトのオーバービューより対象のインスタンス名をクリックします。
  4. インスタンスビューの左サイドメニューより「検索」をクリックします。
  5. 検索画面の左ペインでコレクション、ハンドラ、ユニークキー、表示するフィールド名などを指定します。(「検索」をクリックし、エラーが起きないか確認します)
  6. 「WEBアプリダウンロード(JAVA)」をクリックし、アプリケーションをダウンロードします。
  7. ダウンロードしたzipファイルを解凍し、javaを実行できる環境にコピーします。
  8. 解凍したフォルダの中にwarファイルがありますので、「 java -jar ks-search-client-1.1.4.war 」のような形式でwarファイルを指定し実行します。
  9. 例えば、Macのターミナルからjavaを実行した場合は、Chromeなどのブラウザから「 http://localhost:9090 」へアクセスします。
  10. JavaアプリケーションがKandaSearch内のApache SolrインスタンスへHTTPリクエストを送信し、検索結果をHTTPレスポンスで取得し、ブラウザ上に表示します。

補足事項

  • javaプログラムを停止するには、Crtl+Cを入力します。
  • このアプリケーションが使用するポート番号は、デフォルトではTCP 9090です。
  • 詳細はzip内に同梱されているREADME.mdをご覧ください。

関連する項目