Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

solr-zk-client

A node solr-client that uses zk to find the livenodes at cluster

solr, zookeeper, solr cloud

readme

solr-zk-client

This is a fork from https://github.com/jijordre/node-solr-smart-client

A node.js solr smart client. In short it serves as a smart constructor for solr-client. The constructor queries a ZooKeeper ensemble for live nodes of the input Solr collection. When more than one live node is returned by ZooKeeper, the constructor picks one at random and hands over to solr-client.

Features

Installation

npm install solr-zk-client

Include option --save to add it to your package.json file in the same go:

npm install solr-zk-client --save

Usage

Basic

// Load dependency
var solrSmartClient = require('solr-zk-client');

// Define options
options = {
    zkConnectionString: 'localhost:2181',
    zkLiveNodes: '/live_nodes',
    zkAliases: '/aliases.json',
    solrProtocol: 'http',
    solrCollectionsGetEndPoint: '/admin/collections?action=LIST', // Supports XML and JSON writer types
    ssh: {},
    // Passed verbatim to node-zookeeper-client
    zk: {
        sessionTimeout: 3000,
        spinDelay : 1000,
        retries : 1
    },
    // Passed verbatim to node-rest-client
    rest: {
        requestConfig: {
            timeout: 3000
        },
        responseConfig: {
            timeout: 3000
        },
        mimetypes: {
            json: ["application/json", "application/json;charset=utf-8", "application/json; charset=utf-8", "application/json;charset=UTF-8", "application/json; charset=UTF-8"],
            xml: ["application/xml", "application/xml;charset=utf-8", "application/xml; charset=utf-8", "application/xml;charset=UTF-8", "application/xml; charset=UTF-8"]
        }
    }
};

// Create Solr client, execute query and print number of documents in response.
solrSmartClient.createClient('my_solr_collection', options, function (err, solrClient) {
    if (err) {
        return console.log(err);
    }
    solrClient.search('q=*:*', function (err, obj) {
        if (err) {
            return console.log(err);
        }
        console.log('Number of documents found: %d', obj.response.numFound);
    })
});

SSH tunneling

Assuming SSH tunnels have been set up in the following manner

ssh -f -N -L 2181:my_zookeeper_node_1:2181 my_user@my_zookeeper_node_1
ssh -f -N -L 2182:my_zookeeper_node_2:2181 my_user@my_zookeeper_node_2
ssh -f -N -L 8080:my_solr_node_1:8080 my_user@my_solr_node_1
ssh -f -N -L 8081:my_solr_node_2:8080 my_user@my_solr_node_2

The options' ssh field may be set as

ssh: {
    tunnels: {
        'my_solr_node_1:8080': 'localhost:8080',
        'my_solr_node_2:8080': 'localhost:8081'
    }
}

or alternatively in SSH style as

ssh: {
    tunnels: '8080:my_solr_node_1:8080,8081:my_solr_node_2:8080'
}

As well zkConnectionString in options must have the tunneled value of 'localhost:2181,localhost:2182'.

Test

npm test

changelog

Change Log

0.2.3

  1. Updated solr-client version to 0.7.x

0.2.1

  1. Fixed bug on propagation of options.rest to node-rest-client instance
  2. Added default MIME types for XML and JSON to node-rest-client in support of Solr 5
  3. Added default writer type JSON to end point retrieving Solr collections from API

0.2.0

  1. Added support for Solr collection aliases
  2. Revamped dependencies to most up-to-date minors
  3. Pull #1: Collections list from Solr as JSON
  4. Added this changelog and removed revision history from README.md

0.1.0

Initial release.