概要
Apache Solrを触ってみる。Dockerで環境を作る。
ダウンロードサイト
ここからSolrをダウンロードできる。
https://lucene.apache.org/solr/downloads.html
Requirements
- OpenJDK 14.0.1
Dockerで環境構築
From openjdk:14.0.1
ARG SOLR_VER=8.5.1
ENV PATH $PATH:/usr/local/src/solr-${SOLR_VER}/bin
WORKDIR /usr/local/src
RUN curl -OL http://ftp.meisei-u.ac.jp/mirror/apache/dist/lucene/solr/${SOLR_VER}/solr-${SOLR_VER}.tgz
RUN tar zxvf solr-${SOLR_VER}.tgz
RUN yum install -y procps
WORKDIR /usr/local/src/solr-${SOLR_VER}
ENTRYPOINT ["solr", "start", "-f", "-force"]
build
$ sudo docker build -t solr ./
run
$ sudo docker run --rm -p 8983:8983 --name solr -it solr
WEB UI
画面が見れることを確認
http://localhost:8983/solr/
起動、停止コマンド
start
rootで起動する場合はforceが必要
./bin/solr start -force
stop
8983portを使用しているものを停止
./bin/solr stop -p 8983
全て停止
./bin/solr stop -all -force
Log
ログは以下に出力される。
/usr/local/src/solr-8.5.1/server/logs/solr-8983-console.log
SolrCloud(example)モード
SolrCloudモードで立ち上げる場合は、起動コマンドに-e cloud
オプションを付ける。
SolrCloudとは、HA構成のモードであり、2つのそれぞれ異なるポートでnodeが2つ作られる。(defaultではnode1が8983, node2が7574)
ただし、このモードでは-f
でforegroundでの起動をサポートしていないため、DockerfileからENTRYPOINTの行を削除してbuldし、以下の手順で起動する。
コンテナに入る
$ sudo docker run --rm -p 8983:8983 -p 7574:7574 --name solr -it solr /bin/bash
起動
色々promptが出るが、、全て空白でEnterを押してdefault値でOK。
$ cd /usr/local/src/solr-${SOLR_VER}/bin
$ ./solr start -e cloud -force
Welcome to the SolrCloud example!
WEB UI
以下2つのportで閲覧可能。
- node1: http://localhost:8983/solr/
- node2: http://localhost:7574/solr/
Log
SolrCloudのログは以下に出力される。
- /usr/local/src/solr-8.5.1/example/cloud/node1/logs
- /usr/local/src/solr-8.5.1/example/cloud/node2/logs
exampleデータを登録
defaultでデータセットが用意されているので登録してみる。
$ cd /usr/local/src/solr-8.5.1/example/exampledocs/
xml, json, csv全てをpostする。
$ post -c gettingstarted *.xml
$ post -c gettingstarted *.json
$ post -c gettingstarted *.csv
登録されたデータを確認
以下で検索できる。
$ curl "http://localhost:8983/solr/gettingstarted/select?q=*%3A*&wt=json&indent=true"
postしたデータが確認できる。
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":126,
"params":{
"q":"*:*",
"indent":"true",
"wt":"json"}},
"response":{"numFound":48,"start":0,"maxScore":1.0,"docs":[
{
"id":"SP2514N",
"name":["Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133"],
"manu":["Samsung Electronics Co. Ltd."],
"manu_id_s":"samsung",
"cat":["electronics",
"hard drive"],
"features":["7200RPM, 8MB cache, IDE Ultra ATA-133",
"NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor"],
"price":[92.0],
"popularity":[6],
"inStock":[true],
"manufacturedate_dt":"2006-02-13T15:26:37Z",
"store":["35.0752,-97.032"],
"_version_":1666641399393550336},
{
"id":"6H500F0",
"name":["Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300"],
"manu":["Maxtor Corp."],
"manu_id_s":"maxtor",
"cat":["electronics",
"hard drive"],
"features":["SATA 3.0Gb/s, NCQ",
"8.5ms seek",
"16MB cache"],
"price":[350.0],
"popularity":[6],
"inStock":[true],
"store":["45.17614,-93.87341"],
"manufacturedate_dt":"2006-02-13T15:26:37Z",
"_version_":1666641399397744640},
{
"id":"F8V7067-APL-KIT",
"name":["Belkin Mobile Power Cord for iPod w/ Dock"],
"manu":["Belkin"],
"manu_id_s":"belkin",
"cat":["electronics",
"connector"],
"features":["car power adapter, white"],
"weight":[4.0],
"price":[19.95],
"popularity":[1],
"inStock":[false],
"store":["45.18014,-93.87741"],
"manufacturedate_dt":"2005-08-01T16:30:25Z",
"_version_":1666641399414521856},
{
"id":"apple",
"compName_s":"Apple",
"address_s":"1 Infinite Way, Cupertino CA",
"_version_":1666641399451222016},
{
"id":"ati",
"compName_s":"ATI Technologies",
"address_s":"33 Commerce Valley Drive East Thornhill, ON L3T 7N6 Canada",
"_version_":1666641399453319168},
{
"id":"canon",
"compName_s":"Canon, Inc.",
"address_s":"One Canon Plaza Lake Success, NY 11042",
"_version_":1666641399455416320},
{
"id":"corsair",
"compName_s":"Corsair Microsystems",
"address_s":"46221 Landing Parkway Fremont, CA 94538",
"_version_":1666641399456464896},
{
"id":"dell",
"compName_s":"Dell, Inc.",
"address_s":"One Dell Way Round Rock, Texas 78682",
"_version_":1666641399457513472},
{
"id":"samsung",
"compName_s":"Samsung Electronics Co. Ltd.",
"address_s":"105 Challenger Rd. Ridgefield Park, NJ 07660-0511",
"_version_":1666641399458562048},
{
"id":"viewsonic",
"compName_s":"ViewSonic Corp",
"address_s":"381 Brea Canyon Road Walnut, CA 91789-0708",
"_version_":1666641399459610624}]
}}