Apache Solr(JDK7, Solr 4.9.1, jetty 9)をインストールしてみた、その1

5 min read読了の目安(約4900字

Apache Solr

全文検索エンジンと言えば旬の「Elasticsearch」ですが、たまたま Apache Solr を調査する機会があったのでそのメモです。しかし枯れた感じがする Solr だけど意外とインストールに手間取った。

検索エンジンの常識をApache Solrで身につける

ソフトウェア バージョン
Java 1.7.0
Apache Solr 4.9.1
Jetty 9.2.10

Vagrant

いつもの定義だってばさw

config.vm.define :solr do |node|
  node.vm.network :private_network, ip: "192.168.11.210"
  node.vm.provider "virtualbox" do |v|
    v.customize ["modifyvm", :id, "--memory", 512]
  end
end

Java のインストール

Solr 4.9系は、JDK 7以上じゃないと動かないよ、ってどこかで見たような気がするので、JDK 7 ランタイム,開発環境, ant と wget をインストールします。まあランタイムだけでもいいっちゃいいと思うけどねw

# yum install java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64 ant.x86_64 wget

Apache Solr のインストールと起動確認

インストール先は、どこでもいいのですが特にこだわりないので、/var/local にインストールしました(ちゃんと考えると /opt がいいかもねw)。

$ wget http://ftp.riken.jp/net/apache/lucene/solr/4.9.1/solr-4.9.1.tgz
$ tar xvfz solr-4.9.1.tgz
$ sudo cp -rp solr-4.9.1 /var/local/solr/
$ cd /var/local/solr/example
$ sudo java -jar start.jar

ずらずらずらーってなんだか滝のように表示されるけどエラーらしき表示がされていなければ、Solr が起動してますので。管理画面が表示されるるかブラウザで確認してます。

管理画面 : http://192.168.11.210:8983/solr
検索画面 : http://192.168.11.210:8983/solr/collection1/browse

solr-1.png

データを登録、検索してみる

適当なとこに下記のファイルを作成します。

solrtest.xml
<add>
    <doc>
        <field name="id">1</field>
        <field name="name">hoge hoge</field>
    </doc>
    <doc>
        <field name="id">2</field>
        <field name="name">アパッチ</field>
    </doc>
    <doc>
        <field name="id">3</field>
        <field name="name">東京特許許可局</field>
    </doc>
</add>

curl を使って登録してみます。

$ curl 'http://localhost:8983/solr/collection1/update?commit=true&indent=true' --data-binary @solrtest.xml -H 'Content-Type: text/xml'
<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">155</int>
</lst>
</response>

curl を使って検索してみます。

# curl "http://localhost:8983/solr/collection1/select?q=hoge&wt=json&indent=true"
{
  "responseHeader":{
    "status":0,
    "QTime":10,
    "params":{
      "indent":"true",
      "q":"hoge",
      "wt":"json"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"1",
        "name":"hoge hoge",
        "_version_":1498497071919923200}]
  }}

Jetty 9 をインストールし Solr を起動

ここまで順調ですが、こっからが多少はまりました。

起動に失敗するw

折角なので Jetty 9 を使って Solr を起動してみます。そして起動しないってオチを再現します。

$ wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.10.v20150310.tar.gz
$ tar zxvf jetty-distribution-9.2.10.v20150310.tar.gz
$ sudo cp -rp jetty-distribution-9.2.10.v20150310 /var/local/jetty/
$ sudo cp /var/local/jetty/bin/jetty.sh /etc/init.d/jetty

jetty の起動パラメータを /etc/default/jetty に設定します。

/etc/default/jetty
JAVA_HOME=/etc/alternatives/java_sdk
JAVA_OPTIONS="-Djava.awt.headless=true -server -XX:+UseGCOverheadLimit -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseTLAB -XX:MaxPermSize=128m -Xms512M -Xmx1024M $JAVA_OPTIONS -Dsolr.solr.home=/var/local/solr/example/solr"
NO_START=0
JETTY_ARGS=jetty.port=8983
JETTY_USER=root
JETTY_HOME=/var/local/jetty
JETTY_LOGS=/var/local/solr/example/logs

で、サービスを起動してみます。エラーが発生しとるw

# service jetty start

動かない理由がわかった

jettyで動かすための環境が整備されていないというオチでした。なので設定ファイルもコピーしたりして再挑戦します。

$ sudo cp -a /var/local/solr/example/webapps/solr.war /var/local/jetty/webapps/solr.war
$ sudo cp -a /var/local/solr/example/contexts/solr-jetty-context.xml /var/local/jetty/webapps/solr.xml
$ sudo cp -a /var/local/solr/example/lib/ext/* /var/local/jetty/lib/ext/
$ sudo service jetty start

管理画面が表示されたー (^^

INFO をファイルに保存

INFO が画面に表示されウザイと思ったら log4j の設定がされていなかった。ので、ファイルに保存するよう適当に編集します。ここらへんは、後々に響くのでちゃんと設定しといた方が良いです。

/var/local/jetty/resources/log4j.properties
# This is not needed by Jetty - but it helps with many web apps.

log4j.rootLogger=INFO, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
solr.log=/var/local/solr/example/logs
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

よっしゃ。

参考にさせて頂いたサイトさま

Ubuntu12.04にJetty9とsolr4.5.1をインストールしてみる
Apache Solrのインストール
apache solr インストール