流请求处理器 API

/stream 请求处理器除了运行流式表达式之外,还允许您查找可用的表达式,并允许您控制任何已注册的守护进程的行为。

此 API 不遵循 v2 API 结构。

PLUGINS:列出所有已注册的表达式

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

/stream?action=PLUGINS

PLUGINS 响应

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

使用 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}]}}

这显示一个在 ID 为 12345 的情况下运行的守护进程,并且它已运行 421 次。每个进程都是一个 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Thread.html,并且状态是 Thread 的状态。

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 命令中,守护进程将不再列出。