入门
语言
流表达式和数学表达式是在 SolrCloud 中运行的函数语言。这些语言包含旨在组合以形成编程逻辑的函数。
流表达式是返回元组流的函数。流表达式函数可以组合起来形成一个转换管道。管道从流源开始,例如search
,它会启动一个元组流。一个或多个流装饰器(例如select
)会包装流源并转换元组流。
数学表达式是针对原始值、内存中数组和矩阵进行操作并返回这些值的函数。数学表达式的核心用例是执行数学运算和可视化。
流表达式和数学表达式可以组合起来搜索、采样、聚合、转换、分析和可视化SolrCloud 集合中的数据。
执行
Solr 的/stream
请求处理程序会执行流表达式和数学表达式。此处理程序会编译表达式、运行表达式逻辑并返回 JSON 结果。
管理 UI 流面板
运行流表达式和数学表达式的最简单方法是通过 Solr 管理 UI 中的流屏幕。
下面的屏幕截图显示了一个示例search
流表达式。
下面的屏幕截图显示了一个示例add
数学表达式。
Curl 示例
/stream
处理程序的 HTTP 接口可用于发送流表达式请求并检索响应。
当结果需要被转储到磁盘或太大而无法容纳在 Solr 管理流面板中时,Curl 是运行流表达式的有用工具。下面是一个向/stream
处理程序发送 Curl 命令的示例。
curl --data-urlencode 'expr=search(enron_emails,
q="from:1800flowers*",
fl="from, to",
sort="from asc")' http://localhost:8983/solr/enron_emails/stream
下面显示了此请求的流处理程序返回的 JSON 响应。
{"result-set":{"docs":[
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"EOF":true,"RESPONSE_TIME":33}]}
}
可视化
本指南中的可视化操作使用 Apache Zeppelin 和 Zeppelin-Solr 解释器完成。
Zeppelin-Solr 解释器
Solr 的 Apache Zeppelin 解释器允许在 Zeppelin 中执行流表达式和数学表达式,并可视化结果。有关安装和配置 Zeppelin-Solr 的说明,请参阅该项目的 GitHub 存储库:https://github.com/lucidworks/zeppelin-solr
安装完成后,可以配置 Solr 解释器以连接到您的 Solr 实例。下面的屏幕截图显示了配置 Zeppelin-Solr 的面板。
配置solr.baseUrl
和solr.collection
以指向将发送流表达式和数学表达式以供执行的位置。solr.collection
只是一个执行集合,不需要保存数据,但可以保存数据。流表达式可以选择查询与执行集合附加到同一个 SolrCloud 的任何集合。