1.8. 搜索插件安装

3.0 版本新增。

CouchDB 可以使用嵌入 Apache Lucene 的外部 Java 服务构建和查询全文搜索索引。 通常,此服务安装在与 CouchDB 相同的主机上,并通过环回网络与其通信。

搜索插件与 Java JDK 6、7 和 8 运行时兼容。 从源代码构建版本需要 JDK 6。 **它不适用于任何更新版本的 Java。** 对此表示歉意。

1.8.1. 二进制包的安装

捆绑了搜索插件所有必要依赖项的二进制包可在 GitHub 上获得。 每个版本中的文件应解压缩到 Java 类路径上的目录中。 如果您还没有设置类路径,或者您希望显式设置 Clouseau 的类路径位置,则添加以下行

-classpath '/path/to/clouseau/*'

到下面的服务器命令。 如果 clouseau 安装在 /opt/clouseau 中,则该行将是

-classpath '/opt/clouseau/*'

该服务期望找到几个名为 clouseau.inilog4j.properties 的配置文件,其内容如下

clouseau.ini:

[clouseau]

; the name of the Erlang node created by the service, leave this unchanged
name=[email protected]

; set this to the same distributed Erlang cookie used by the CouchDB nodes
cookie=monster

; the path where you would like to store the search index files
dir=/path/to/index/storage

; the number of search indexes that can be open simultaneously
max_indexes_open=500

log4j.properties:

log4j.rootLogger=debug, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %c [%p] %m%n

一旦这些文件到位,就可以使用以下调用启动服务

java -server \
     -Xmx2G \
     -Dsun.net.inetaddr.ttl=30 \
     -Dsun.net.inetaddr.negative.ttl=30 \
     -Dlog4j.configuration=file:/path/to/log4j.properties \
     -XX:OnOutOfMemoryError="kill -9 %p" \
     -XX:+UseConcMarkSweepGC \
     -XX:+CMSParallelRemarkEnabled \
     com.cloudant.clouseau.Main \
     /path/to/clouseau.ini

1.8.2. Chef

CouchDB cookbook 可以从源代码构建搜索插件,并将其安装在服务器上,与 CouchDB 并存。

1.8.3. Kubernetes

通过 Helm 图表 在 Kubernetes 上运行 CouchDB 的用户可以通过在图表值中设置 enableSearch: true 将搜索服务添加到每个 CouchDB Pod 中。

1.8.4. 额外细节

搜索用户指南 中提供了有关使用此插件创建和查询全文索引的详细信息。

插件的源代码和额外的配置文档可在 GitHub 上获得,地址为 https://github.com/cloudant-labs/clouseau