串流請求處理器 API

/stream 請求處理器除了執行串流運算式外,還可讓您找出可用的運算式,並讓您控制任何已註冊精靈程序的行為。

此 API 不遵循 v2 API 結構。

外掛程式:列出所有已註冊的運算式

列出已註冊且可供使用的所有串流運算式。這包括 StreamHandler 註冊的預設運算式,以及您已註冊的任何運算式。

/stream?action=PLUGINS

外掛程式回應

回應將列出每個已註冊的運算式及其實作類別。

使用外掛程式的範例

輸入

https://127.0.0.1:8983/solr/gettingstarted/stream?action=PLUGINS

輸出

{
  "plugins":{
    "enumeratedDistribution":"org.apache.solr.client.solrj.io.eval.EnumeratedDistributionEvaluator",
    "year":"org.apache.solr.client.solrj.io.eval.TemporalEvaluatorYear",
    "lteq":"org.apache.solr.client.solrj.io.eval.LessThanEqualToEvaluator",
    "upper":"org.apache.solr.client.solrj.io.eval.UpperEvaluator",
    "commit":"org.apache.solr.client.solrj.io.stream.CommitStream",
    "echo":"org.apache.solr.client.solrj.io.stream.EchoStream"
}}

LIST:列出精靈程序

daemon 函式可讓您包裝串流運算式,並以間隔執行它,以提供持續的推送和提取串流。此命令會列出目前正在執行的所有精靈程序。

/stream?action=LIST

此命令會列出已註冊到您正在互動之特定核心的所有精靈程序,而不是整個集合。如果您的集合包含多個分片或這些分片的多個複本,每個 LIST 命令會在核心之間跳轉,並傳回不同的程序清單。建議您為了管理精靈程序,建立一個包含單一核心且沒有複本的集合,以託管精靈程序,以確保單一檢視。

LIST 回應

回應將描述該特定核心上的每個精靈程序。

使用 LIST 的範例

這假設您已註冊類似於以下簡單範例的精靈程序,該範例從 gettingstarted 集合讀取單一隨機文件,然後每 10 秒將其寫回相同的集合

daemon(
  id="12345",
  runInterval="10000",
  update(gettingstarted,
    random(gettingstarted,
         q="*:*",
         rows="1"
    )
  )
)

輸入

https://127.0.0.1:8983/solr/gettingstarted/stream?action=LIST

輸出

{
  "result-set":{
    "docs":[{
        "startTime":1582820357008,
        "stopTime":0,
        "id":"12345",
        "state":"TIMED_WAITING",
        "iterations":421}
      ,{
        "EOF":true}]}}

這顯示單一精靈程序在 12345 的 ID 下執行,並且已執行 421 次。每個程序都是 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Thread.html,而狀態是執行緒的狀態。

STOP:停止精靈程序

/stream?action=STOP&id=12345

STOP 回應

回應會回報精靈程序已停止,或者回報在請求路由到的特定核心上找不到該程序。

使用 STOP 的範例

輸入

https://127.0.0.1:8983/solr/gettingstarted/stream?action=STOP&id=12345

輸出

{
  "result-set":{
    "docs":[{
        "DaemonOp":"Deamon:12345 stopped on gettingstarted_shard2_replica_n4"}
      ,{
        "EOF":true}]}}

再次呼叫 LIST 現在會記錄程序的 stopTime

START 回應

回應會回報精靈程序已停止,或者回報在請求路由到的特定核心上找不到該程序。

使用 START 的範例

輸入

https://127.0.0.1:8983/solr/gettingstarted/stream?action=START&id=12345

輸出

{
  "result-set":{
    "docs":[{
        "DaemonOp":"Deamon:12345 started on gettingstarted_shard2_replica_n4"}
      ,{
        "EOF":true}]}}

iterations 的計數會透過 STOP/START 週期保留。

KILL:移除精靈程序

/stream?action=KILL&id=12345

KILL 回應

回應會回報精靈程序已停止,或者回報在請求路由到的特定核心上找不到該程序。

使用 KILL 的範例

輸入

https://127.0.0.1:8983/solr/gettingstarted/stream?action=KILL&id=12345

輸出

{
  "result-set":{
    "docs":[{
        "DaemonOp":"Deamon:12345 killed on gettingstarted_shard2_replica_n4"}
      ,{
        "EOF":true}]}}

精靈程序將不再列在後續的 LIST 命令中。