1.9. Nouveau Server Installation
Added in version 3.4.0.
CouchDB can build and query full-text search indexes using an external Java service that embeds Apache Lucene. Typically, this service is installed on the same host as CouchDB and communicates with it over the loopback network.
Nouveau server is runtime-compatible with Java 11 or higher.
1.9.1. Enable Nouveau
You need to enable nouveau in CouchDB configuration;
[nouveau] enable = true
1.9.2. Installation of Binary Packages
The Java side of nouveau is a set of jar
files, one for nouveau itself and the rest
for dependencies (like Lucene and Dropwizard).
To start the nouveau server:
java -jar /path/to/nouveau.jar server /path/to/nouveau.yaml
Ensure that all the jar files from the release are in the same directory as nouveau.jar
We ship a basic nouveau.yaml
configuration with useful defaults;
see that file for details.
nouveau.yaml:
maxIndexesOpen: 100
commitIntervalSeconds: 30
idleSeconds: 60
rootDir: target/indexes
As a DropWizard project you can also use the many configuration options that it supports. See configuration reference.
By default Nouveau will attempt a clean shutdown if sent a TERM
signal, committing any outstanding index updates, completing any
in-progress segment merges, and finally closes all indexes. This is
not essential and you may safely kill the JVM without letting it do
this, though any uncommitted changes are necessarily lost. Once the
JVM is started again this indexing work will be attempted again.
1.9.3. Docker
There is a version of of the semi-official CouchDB Docker image
available under the *-nouveau
tags (eg, 3.4-nouveau
).
1.9.3.1. Compose
A minimal CouchDB/Nouveau cluster can be create with this compose:
services:
couchdb:
image: couchdb:3
environment:
COUCHDB_USER: admin
COUCHDB_PASSWORD: admin
volumes:
- couchdb:/opt/couchdb/data
ports:
- 5984:5984
configs:
- source: nouveau.ini
target: /opt/couchdb/etc/local.d/nouveau.ini
nouveau:
image: couchdb:3-nouveau
volumes:
couchdb:
configs:
nouveau.ini:
content: |
[couchdb]
single_node=true
[nouveau]
enable = true
url = http://nouveau:5987
Note
This is not production ready, but it is a quick way to get Nouveau running.