流请求处理程序 API

除了运行流表达式之外,/stream 请求处理程序还允许你了解可以使用哪些表达式,并让你控制任何已注册守护进程的行为。

此 API 不遵循 v2 API 结构。

插件:列出所有已注册表达式

列出已注册且可供使用的所有流表达式。这包括 StreamHandler 注册的默认表达式和已注册的任何表达式。

/stream?action=PLUGINS

插件响应

响应将列出已注册的每个表达式及其实现类。

使用插件的示例

输入

http://localhost: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"
}}

列表:列出守护进程

daemon 函数允许你包装流表达式并以一定时间间隔运行它,以提供连续的推送和拉取流。此命令列出所有当前正在运行的守护进程。

/stream?action=LIST

此命令列出与您正在交互的特定核心注册的所有守护进程,而不是整个集合中的守护进程。如果您有一个由多个分片或这些分片的多个副本组成的集合,则每个 LIST 命令将在核心之间切换,返回不同的进程列表。建议您为管理守护进程创建一个具有单个核心且没有副本的集合来托管守护进程,以确保单一视图。

LIST 响应

响应将描述该特定核心上的每个守护进程。

使用 LIST 的示例

这假设您已注册了一个守护进程,类似于以下简单的示例,该示例从 gettingstarted 集合中读取一个随机文档,然后每 10 秒将其写回同一集合

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

输入

http://localhost:8983/solr/gettingstarted/stream?action=LIST

输出

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

这显示了一个在 id 为 12345 下运行的单个守护进程,并且它已运行 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 的示例

输入

http://localhost: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 的示例

输入

http://localhost: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 的示例

输入

http://localhost:8983/solr/gettingstarted/stream?action=KILL&id=12345

输出

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

守护进程将不再列在后续 LIST 命令中。