はじめに

言語

ストリーミング式数式は、SolrCloud内で実行される関数言語です。これらの言語は、プログラミングロジックを形成するために設計された関数の集合から構成されています。

ストリーミング式は、タプルのストリームを返す関数です。ストリーミング式の関数は、変換パイプラインを形成するように構成できます。パイプラインは、タプルのストリームを開始するsearchなどのストリームソースから始まります。selectなどの1つ以上のストリームデコレータは、ストリームソースをラップしてタプルのストリームを変換します。

数式は、プリミティブ、メモリ内の配列、行列を操作し、返す関数です。数式の主要なユースケースは、数学演算と可視化の実行です。

ストリーミング式と数式を組み合わせて、SolrCloudコレクション内のデータの検索、サンプリング、集計、変換、分析、可視化を行うことができます。

実行

Solrの/streamリクエストハンドラは、ストリーミング式と数式を実行します。このハンドラは式をコンパイルし、式のロジックを実行し、JSONの結果を返します。

管理UIストリームパネル

ストリーミング式と数式を実行する最も簡単な方法は、Solr管理UIのストリーム画面を使用することです。

下記のスクリーンショットに、サンプルのsearchストリーミング式を示します。

search

下記のスクリーンショットに、サンプルのadd数式を示します。

add

Curl の例

/streamハンドラのHTTPインターフェースを使用して、ストリーミング式のリクエストを送信し、レスポンスを取得できます。

Curlは、結果をディスクにスプールする必要がある場合、またはSolr管理ストリームパネルにとって大きすぎる場合に、ストリーミング式を実行するための便利なツールです。以下は、/streamハンドラへのCurlコマンドの例です。

curl --data-urlencode 'expr=search(enron_emails,
                                   q="from:1800flowers*",
                                   fl="from, to",
                                   sort="from asc")' https://127.0.0.1:8983/solr/enron_emails/stream

このリクエストに対するストリームハンドラのJSONレスポンスを以下に示します。

{"result-set":{"docs":[
   {"from":"1800flowers.133139412@s2u2.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers.93690065@s2u2.com","to":"jtholt@ect.enron.com"},
   {"from":"1800flowers.96749439@s2u2.com","to":"alewis@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"ebass@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"ebass@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"ebass@enron.com"},
   {"EOF":true,"RESPONSE_TIME":33}]}
}

可視化

このガイド内の視覚化は、Zeppelin-Solr インタープリタを使用したApache Zeppelinによって実行されました。

Zeppelin-Solr インタープリタ

Solr用のApache Zeppelinインタープリタを使用すると、ストリーミング式と数学式を実行し、その結果をZeppelinで視覚化できます。Zeppelin-Solrのインストールと設定手順は、プロジェクトのGitHubリポジトリにあります:https://github.com/lucidworks/zeppelin-solr

インストール後、Solrインタープリタを構成してSolrインスタンスに接続できます。以下のスクリーンショットは、Zeppelin-Solrを構成するためのパネルを示しています。

zepconf

ストリーミング式と数学式が送信されて実行される場所を指すように、solr.baseUrlsolr.collectionを構成します。solr.collectionは実行コレクションであり、データが含まれている必要はありませんが、データを含めることもできます。ストリーミング式は、実行コレクションと同じSolrCloudにアタッチされている任意のコレクションをクエリするように選択できます。

zplot

ストリーミング式の結果セットは、Zeppelin-Solrによって自動的に視覚化できます。

数学式の結果は、zplot関数を使用して視覚化のためにフォーマットする必要があります。この関数は、**ベクトル**、**行列**、**確率分布**、**2Dクラスタリング結果**のプロットをサポートしています。

このガイドには、ストリーミング式と数学式の両方を視覚化する方法を示す多くの例があります。