intra-mart Accel Platform Solr管理者ガイド 第9版 2024-10-01

4. Solrのセットアップ

IM-ContentsSearch を利用するための Solr のセットアップ方法について説明します。

4.1. 前提条件

注意

Solr はディスクアクセスが大量に発生する場合があります。
そのため、intra-mart Accel Platform がセットアップされたサーバと同一筐体に構築した場合、パフォーマンスに影響が出る可能性があります。
運用環境では intra-mart Accel Platform と Solr を別サーバに構築することを強く推奨します。

注意

Solr における最適化処理では、一時的に登録されている全データを複製します。
そのため、最適化処理時には、Solrサーバ上で、通常使用しているディスク容量の2倍以上のディスクの空き容量を必要としますので、注意してください。

4.2. セットアップ手順

IM-ContentsSearch では、Solr のセットアップ資材を提供しています。
  • アプリケーションサーバ「Jetty」を利用した構築および起動

コラム

2021 Spring(Bergamot) からアプリケーションサーバは同梱されている Jetty を使用します。
Resin/Tomcat/Payara へデプロイするためのセットアップツールは提供しなくなりました。

4.2.1. セットアップ資材の取得・展開

  1. セットアップ資材の取得

    Solr のセットアップ資材を取得します。
    セットアップツールは以下のURLよりダウンロードできます。ダウンロードには製品のライセンスキーが必要です。
  2. セットアップツールの展開(解凍)

    セットアップ資材のファイル <solr.zip> を取得後、任意のパスに展開します。
    本書では、例として以下のディレクトリを指定します。
    • Windowsの場合

      C:\solr
      
    • Linuxの場合

      /usr/local/solr
      

    セットアップ資材のファイルを展開したディレクトリを、以下 %SOLR_SETUP_HOME% と略します。

4.2.2. サーバのセットアップ

コラム

Solr にはインストールスクリプト(install_solr_service.sh)も用意されていますが、ここでは手動による導入手順を紹介します。
なお、Apache Software Foundation の Web サイトには Solr のセットアップ手順についても記載されていますので、併せてご活用ください。

  1. 稼働ユーザのセットアップ

    Solr を root として実行することは推奨されないため、Solr の稼働ユーザを作成してください。
    また、稼働ユーザを %SOLR_SETUP_HOME% ディレクトリの所有者に設定し、%SOLR_SETUP_HOME%/bin/solr スクリプトの実行権限を付与してください。
  2. 環境変数のセットアップ

    環境に合わせて調整してください。
    • Windows 環境で使用するインクルードファイル

      %SOLR_SETUP_HOME%\bin\solr.in.cmd
      
    • Linux 環境で使用するインクルードファイル

      %SOLR_SETUP_HOME%/bin/solr.in.sh
      
    以下に主要な環境変数を記載します。
    環境変数 説明
    SOLR_JETTY_HOST
    Solr がバインドするネットワークインタフェースを設定します。デフォルトは 127.0.0.1 のため、外部から Solr にアクセスできません。
    なお、Solr はオープンなネットワーク上に公開されるように設計されていませんので、最小限の範囲で公開することを推奨します。
    ※intra-mart Accel Platform から Solr にアクセスできるように設定してください。
    SOLR_IP_ALLOWLIST / SOLR_IP_DENYLIST
    ネットワーク アクセスを許可または制限する IP アドレスを指定します。
    SOLR_HEAP / SOLR_JAVA_MEM
    Solr が使用可能なメモリサイズを設定します。デフォルトは 512m (512MB)のため、環境に合わせて調整が必要です。
    ※後述の起動引数でも指定できます。
    SOLR_JAVA_HOME
    Solr が使用する Java を設定します。
    ※JAVA_HOME で指定された Java 以外を使用する場合に設定します。
    SOLR_PORT
    Solr がリッスンするポート番号です。デフォルトは 8983 です。
    ※後述の起動引数でも指定できます。

4.2.3. サーバの起動と停止

  1. サーバの起動

    • Windowsの場合

      C:\solr\bin> solr.cmd start
      
    • Linuxの場合

      /usr/local/solr/bin/solr start
      

    コラム

    Solrの起動時、以下のようなエラーが発生する場合、ポート番号の設定を変更してください。
    -p %PORT% と指定することで Solr が使用するポート番号を変更できます。

    エラーログ出力例

    ERROR: Process 4 is already listening on port 8983. If this is Solr, please stop it first before starting (or use restart). If this is not Solr, then please choose a different port using -p PORT
    

    コラム

    Solrの起動中、環境により OutOfMemoryError が発生することがあります。
    その場合、初期値である512MBよりも大きなメモリサイズを、起動時に設定してください。
    -m %MEMORY_SIZE% と指定することで Solr が使用可能なメモリサイズを変更できます。

    例えば、メモリ4GBを確保する場合、「-m 4g」と指定します。

    コラム

    Solrの起動中、以下のような警告が発生することがあります。
    その場合、Solr の稼働ユーザの作成プロセス数の制限を変更することで回避できます。

    警告ログ出力例

    [WARN] *** Your Max Processes Limit is currently 31212.
    
    作成プロセス数の制限は以下の方法で変更可能です。
    • ulimit コマンド(root 権限による実行)

      実行例

      ulimit -u 65000
      
    • 制限ファイル(/etc/security/limits.conf 等)への制限設定追加

      記載例

      [Solr 稼働ユーザ] hard nproc 65000
      [Solr 稼働ユーザ] soft nproc 65000
      
  2. サーバの停止

    Solr を停止する際には、停止する Solr ポート番号を指定します。
    -p %PORT% の代わりに -all と指定することですべての Solr を停止することもできます。
    • Windowsの場合

      C:\solr\bin> solr.cmd stop -p %PORT%
      
    • Linuxの場合

      /usr/local/solr/bin/solr stop -p %PORT%
      

4.2.4. Solr管理画面の確認

Solr管理画面へ接続し、「search」ボタンが正常に動作することを確認します。
  1. 以下のURLをWebブラウザのアドレスバーに入力して「Solr管理」画面が表示できることを確認します。

    http://<HOST>:<PORT>/solr/#/
    
    図 Solr管理画面
  2. 「Core Selector」を選択し、コアの概要画面を表示します。

    http://<HOST>:<PORT>/solr/#/default/query
    
    図 コアの概要画面
  3. 「query」リンクをクリックします。

    図 クエリー画面
  4. q (The Query String) のテキストエリアに 「*:*」と入力されていることを確認し、「Execute Query」ボタンをクリックします。

  5. 検索に成功した場合、ブラウザに以下のようなJSONが表示されます。

    {
      "responseHeader":{
        "status":0,
        "QTime":38,
        "params":{
          "q":"*:*",
          "indent":"true",
          "q.op":"OR",
          "useParams":"",
          "_":"1726023537708"
        }
      },
      "response":{
        "numFound":0,
        "start":0,
        "numFoundExact":true,
        "docs":[ ]
      }
    }