串流表達式
串流表達式將 SolrCloud 的功能公開為可組合的函式。這些函式提供一個系統,用於搜尋、轉換、分析和視覺化儲存在 SolrCloud 集合中的資料。
在較高的層次上,文件中將探討四個主要功能
-
搜尋、取樣和彙總來自 Solr 的結果。
-
從 Solr 擷取結果後轉換結果集。
-
使用機率、統計和機器學習函式庫分析和建模結果集。
-
視覺化結果集、彙總和資料的統計模型。
串流語言基礎
串流表達式由使用 Solr 集合的串流函式組成。它們會發出元組串流(鍵/值對應)。
某些提供的串流函式設計為使用整個結果集,而不是像一般搜尋一樣使用前 N 個結果。這由/export 處理程式支援。
某些串流函式充當串流來源以啟動串流流程。其他串流函式則充當串流裝飾器,以包裝其他串流函式並對元組串流執行操作。許多串流函式可以跨工作程式集合平行處理。這對於關聯代數函式特別有效。
串流請求與回應
Solr 有一個 /stream
請求處理程式,它會接收串流表達式請求並以 JSON 串流傳回元組。此請求處理程式是隱含定義的,這表示不需要在 solrconfig.xml
中定義任何項目 - 請參閱隱含請求處理程式。
/stream
請求處理器接受一個參數 expr
,用於指定串流表達式。例如,此 curl 命令會將一個簡單的 search()
表達式編碼並以 POST 方式傳送至 /stream
處理器。
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
以下包含每個函數的參數詳細資訊。
對於上述範例,/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}]}
}
請注意,上述範例串流中的最後一個元組是 {"EOF":true,"RESPONSE_TIME":33}
。EOF
表示串流的結束。若要處理 JSON 回應,您需要使用串流 JSON 實作,因為串流表達式旨在返回整個結果集,其中可能包含數百萬筆記錄。在您的 JSON 用戶端中,您需要迭代每個文件(元組),並檢查 EOF 元組以確定串流的結束。
新增自訂表達式
透過實作 Expressible 介面,可以輕鬆建立您自己的自訂表達式。若要將自訂表達式新增至 /stream
和 /graph
處理器的已知映射清單,您只需透過以下方式在 solrconfig.xml
中將其宣告為外掛程式即可:
<expressible name="custom" class="org.example.CustomStreamingExpression"/>
語言元素
數學表達式
數學表達式是一個向量和矩陣數學函式庫,可以與串流表達式結合使用,以執行分析和建立結果集的數學模型。從語言的角度來看,數學表達式是串流表達式的一個子語言,它不返回元組串流。相反地,它們對數字、向量、矩陣和數學模型進行操作並返回這些值。文件將說明如何結合串流表達式和數學表達式。
數學表達式使用者指南請參閱串流表達式和數學表達式。
從語言的角度來看,數學表達式被稱為串流評估器。
所有可用評估器表達式的完整參考資料,請參閱串流評估器參考。
視覺化
串流表達式和數學表達式的視覺化是使用 Apache Zeppelin 和 Zeppelin-Solr Interpreter 完成的。
視覺化串流表達式和設定 Apache Zeppelin 的說明,請參閱Zeppelin-Solr Interpreter。
串流表達式和數學表達式對視覺化技術進行了深入探討。
串流螢幕
-
串流螢幕:提交串流表達式並查看結果和剖析說明。