Loading
BLOG 開発者ブログ

2025年3月27日

Solr管理画面GUI入門:初心者のための基本Tips集

こんにちは。

クラウドソリューショングループのsatokです。
今回はApache Solr(以下Solr)について、業務で「もっと早く教えてほしかった」と感じた部分を共有します。
Solrを初めて業務で使用し、Solrについての理解を深めたいといった方には特におすすめです。
 

目次

 

1. この記事の目的

この記事では、Solr初心者を対象に、管理画面から「データの登録」「データの閲覧・検索」「データの削除」をするための操作を紹介します。
Solrが行っていることを利用者目線で理解し、効率的な利用を目指します。

 

2. Solr管理画面Tips

早速ではありますが、管理画面上からSolrを操作できるTipsを紹介していきます。

データの登録

Solrには検索用のデータを登録、格納することができ、それらの格納されたデータは「コレクション」と呼ばれます。
データベースのようなものをイメージすると近いですね。
通常はこのコレクションに対してAPIでJSONデータなどをPOSTし、データを登録しますが
同様のことを管理画面からも実行することができます。
今回はテスト用のコレクションを作成し、適当なデータを登録します。
 
まずコレクションの作成です。

今回行う手法はあくまでもテスト用の環境を作成する手順のため、通常であれば細かな設定が必要になります。
今回は割愛しますが、しっかりとしたサービスのためにSolrの環境をゼロから構築する方は
絶対に今回紹介する手法は取らないで下さい。

手順はいたって簡単です。
まず管理画面左側の「collections」をクリックし、続いて表示される「Add Collection」をクリックします。

続いて「name」の部分に任意のコレクション名を入力し、「config set」で「_default」を選択します。
最後に「Add Collection」をクリックすればコレクション作成は完了です。

以下の画像のような画面が表示されれば成功です。

こうすると現在は空の入れ物だけが作成されている状態となるので、一度中身を見てみましょう。
 
画面左側の「Collection Sele…」から今作成したコレクション名をクリックします。
(画面のサイズの都合で途切れてしまっていますが、おそらく「Collection Selector」が本来の表示のはずです。)

続いて画面左下の「Query」をクリックします。

表示された画面がこの後紹介する「データの閲覧・検索」をする画面となります。
今回は特に何も変更せず画面下部の「Execute Query」をクリックします。

すると画面中央付近に、コレクション内のデータに対する検索結果が表示されます。
今回は「コレクション内のデータを全て検索し、10件だけ表示しなさい」という検索の仕方をしていますが、
「response」の「numFound」が0になっていると思います。
つまりコレクション内にデータが入っていない、ということになります。
これで中身が空のコレクションが正しく作成されたことが確認できました。

続いてこのコレクションにデータを入れていきましょう。
本来であればスキーマの設定(どんなデータを入れるか)などを行う必要がありますが、Solrは結構賢いのでいきなりデータを投入してしまいます。

この部分もあくまでもテスト用の環境を作成する手順のため、しっかりとしたサービスを構築する方は
絶対に今回紹介する手法は取らないで下さい。

JSON形式でデータさえ用意できれば、Solrにデータを登録するのに時間はかかりません。
今回はMicrosoftのCopilotにラーメンのデータを用意してもらったので、こちらを使用していきます。
※補足: 今回使用したプロンプトと生成されたデータを置いておきます。
   データを用意するのが面倒な人はご利用下さい。

プロンプト:

以下のJSON形式で、適当なラーメンのデータを20件ほど生成して
ただしhardnessとflavorfulnessとoilは1~10の数値(小数点可)で表現して
かつidは1から順番にインクリメントして
{
	id:
	name:
	price:
	taste:
	hardness:
	flavorfulness:
	oil:
}

 

生成されたデータ(クリックで展開/閉じる)

{
“id”: 1,
“name”: “醤油ラーメン”,
“price”: 800,
“taste”: “醤油”,
“hardness”: 7.5,
“flavorfulness”: 8.0,
“oil”: 6.5
},
{
“id”: 2,
“name”: “味噌ラーメン”,
“price”: 850,
“taste”: “味噌”,
“hardness”: 6.0,
“flavorfulness”: 8.5,
“oil”: 7.0
},
{
“id”: 3,
“name”: “塩ラーメン”,
“price”: 750,
“taste”: “塩”,
“hardness”: 7.0,
“flavorfulness”: 7.5,
“oil”: 5.5
},
{
“id”: 4,
“name”: “豚骨ラーメン”,
“price”: 900,
“taste”: “豚骨”,
“hardness”: 8.0,
“flavorfulness”: 9.0,
“oil”: 8.5
},
{
“id”: 5,
“name”: “担々麺”,
“price”: 950,
“taste”: “辛味噌”,
“hardness”: 7.0,
“flavorfulness”: 8.5,
“oil”: 7.5
},
{
“id”: 6,
“name”: “鶏白湯ラーメン”,
“price”: 880,
“taste”: “鶏白湯”,
“hardness”: 7.5,
“flavorfulness”: 8.0,
“oil”: 6.0
},
{
“id”: 7,
“name”: “魚介豚骨ラーメン”,
“price”: 920,
“taste”: “魚介豚骨”,
“hardness”: 8.0,
“flavorfulness”: 9.0,
“oil”: 7.5
},
{
“id”: 8,
“name”: “醤油つけ麺”,
“price”: 850,
“taste”: “醤油”,
“hardness”: 7.5,
“flavorfulness”: 8.0,
“oil”: 6.5
},
{
“id”: 9,
“name”: “味噌つけ麺”,
“price”: 900,
“taste”: “味噌”,
“hardness”: 6.5,
“flavorfulness”: 8.5,
“oil”: 7.0
},
{
“id”: 10,
“name”: “塩つけ麺”,
“price”: 800,
“taste”: “塩”,
“hardness”: 7.0,
“flavorfulness”: 7.5,
“oil”: 5.5
},
{
“id”: 11,
“name”: “豚骨つけ麺”,
“price”: 950,
“taste”: “豚骨”,
“hardness”: 8.0,
“flavorfulness”: 9.0,
“oil”: 8.5
},
{
“id”: 12,
“name”: “辛味噌つけ麺”,
“price”: 980,
“taste”: “辛味噌”,
“hardness”: 7.0,
“flavorfulness”: 8.5,
“oil”: 7.5
},
{
“id”: 13,
“name”: “鶏白湯つけ麺”,
“price”: 900,
“taste”: “鶏白湯”,
“hardness”: 7.5,
“flavorfulness”: 8.0,
“oil”: 6.0
},
{
“id”: 14,
“name”: “魚介豚骨つけ麺”,
“price”: 950,
“taste”: “魚介豚骨”,
“hardness”: 8.0,
“flavorfulness”: 9.0,
“oil”: 7.5
},
{
“id”: 15,
“name”: “醤油ラーメン(大盛り)”,
“price”: 1000,
“taste”: “醤油”,
“hardness”: 7.5,
“flavorfulness”: 8.0,
“oil”: 6.5
},
{
“id”: 16,
“name”: “味噌ラーメン(大盛り)”,
“price”: 1050,
“taste”: “味噌”,
“hardness”: 6.0,
“flavorfulness”: 8.5,
“oil”: 7.0
},
{
“id”: 17,
“name”: “塩ラーメン(大盛り)”,
“price”: 950,
“taste”: “塩”,
“hardness”: 7.0,
“flavorfulness”: 7.5,
“oil”: 5.5
},
{
“id”: 18,
“name”: “豚骨ラーメン(大盛り)”,
“price”: 1100,
“taste”: “豚骨”,
“hardness”: 8.0,
“flavorfulness”: 9.0,
“oil”: 8.5
},
{
“id”: 19,
“name”: “担々麺(大盛り)”,
“price”: 1150,
“taste”: “辛味噌”,
“hardness”: 7.0,
“flavorfulness”: 8.5,
“oil”: 7.5
},
{
“id”: 20,
“name”: “鶏白湯ラーメン(大盛り)”,
“price”: 1080,
“taste”: “鶏白湯”,
“hardness”: 7.5,
“flavorfulness”: 8.0,
“oil”: 6.0
}

生成されたデータを画面左側の「Documents」から投入していきます。

ここではコレクションに対する様々な操作(データの投入、更新、削除など)ができます。
今回は画面中央の「Document(s)」からデータを投入します。

特に設定は変更せず、先ほどのJSONデータをDocument(s)にコピーします。
コピーができたら、画面下部の「Submit Document」をクリックするだけで、コレクションにデータが登録されます。

正しくデータが登録されると画面右側に「Status: Success」が表示されます。

あまりないとは思いますが、万が一ここでエラーが出た場合はJSONの形式を見直してみてください。
Copilotに生成してもらったデータを完全にコピーして使用すると、[]が前後に入っているためエラーになることがあります。
データが{}のカッコから始まっていることを確認してみてください。

登録されているデータの確認

Solrでは、これまで操作してきたコレクションに対して検索を実行し、結果を表示、あるいは返却することができます。
通常はAPIで検索結果を取得しシステムなどで活用することとなりますが、管理画面上からでも同様に検索をかけ、表示することができます。

実際にここまでで登録したデータを確認してみましょう。
再び画面左側から「Query」を選択し、「Execute Query」をクリックします。
すると、今度は画面にラーメンの一覧が表示されると思います。
numFoundが20になっており、先ほど登録したデータが全てコレクションに入っていることがわかります。

ちなみに画面には10件のみ表示されているので、全件表示したい場合は画面右側の「start, rows」の右側の数字を大きくすることでその件数分表示することができます。

今回の検索は画面左側の「q」欄の条件で検索しており、「すべてのデータを検索結果として表示せよ」ということを意味しています。

この欄では検索条件を変更することができ:(コロン)の前後で条件を指定することができます。
コロンの前には検索対象となるフィールド=カラム(name、priceなど)を、
コロンの後には検索内容(ラーメン、850など)をそれぞれ指定することができます。
試しにqの欄の「name:ラーメン」と入れて検索を実行してみましょう。

するとnumFoundが11になり、nameのフィールドに「ラーメン」を含むものだけが表示されました。
このようにSolrでは、それぞれのフィールドに対して好きな条件で検索をかけ、データを確認することができます。

登録されているデータの削除

続いてデータの削除についてです。
例えば先ほどのデータの中から、「鶏白湯つけ麺」を削除したい、という状況を想定します。

通常のデータベースであればSQLを記述して削除できますが、Solrでも似たようなことが可能です。
データを投入した際に使用した「Documents」画面に移動し、「Document Type」を「XML」に設定します。

そして以下のコードを「Document(s)」に入力し、「Submit Document」します。

<delete><query>id:13</query></delete>

実行内容は簡単で、「idが13のデータをdeleteしろ」と言っているだけです。
今回削除したい「鶏白湯つけ麺」のidが13であるため、idで直接削除対象を指定しているわけですね。
正しく実行できるとデータを追加した際と同様に「Status: success」のレスポンスが返ってきます。
正しいレスポンスが確認できましたら、データが削除されていることを確認しましょう。
再び「Query」画面に移動し、行数が20行以上表示される状態にしてから検索を実行します。
検索結果を下にスクロールすると、idが13の「鶏白湯つけ麺」が消去されていることがわかります。

この削除方法では、他にも以下のように記載するとデータが全件削除できます。

<delete><query>*:*</query></delete>

「コレクションは削除したくないが、データは全件削除したい」といった場合にはお試しください。

登録されているデータの削除

最後に、今回作成したコレクションを削除しましょう。

もし他にコレクションがある環境をご使用の場合、くれぐれも誤って目的と異なるコレクションを削除してしまわないようご注意ください。

まず、画面左側の「Collection」をクリックします。

続いて、「Add Collection」の下にある、今回作成したコレクションの名前をクリックします。
クリックすると画像のように表示されます。

すると画面上部に「Delete collection」が表示されるので、クリックします。

そうすると、削除するコレクション名が求められますので、今回作成したコレクションの名前を入力し、「Delete」をクリックします。

無事にコレクションの削除が完了すると、先ほどまであった「Add Collection」の下のコレクション名が削除されているはずです。

3. まとめ

今回はSolrの管理画面から様々な操作を行う方法を紹介しました。
GUIでの操作は動線や結果がわかりやすいというメリットがありますが、ヒューマンエラーの温床にもなります。
この記事はあくまでもSolrで行っていることを理解しやすくするためのものですので、普段からSolrの運用をされる場合は可能な限りAPIでの操作を目指しましょう。
皆様も良きSolrライフをお過ごしください。
それではまた次の記事でお会いしましょう。

satokのブログ