# Fluent::Plugin::SolrOutput This is a [Fluentd](http://fluentd.org/) output plugin for send data to [Apache Solr](http://lucene.apache.org/solr/). It support [SolrCloud](https://cwiki.apache.org/confluence/display/solr/SolrCloud) not only Standalone Solr. ## Requirements | fluent-plugin-output-solr | fluentd | td-agent | ruby | | ------------------------- | --------------- | -------- | ------ | | 1.x.x | >= 0.14.0, < 2 | 3 | >= 2.1 | | 0.x.x | ~> 0.12.0 | 2 | >= 1.9 | * The 1.x.x series is developed from this branch (master) * The 0.x.x series (compatible with fluentd v0.12, and td-agent 2) is developed on the [v0.x.x branch](https://github.com/mosuka/fluent-plugin-output-solr/tree/v0.x.x) ## Installation Install it yourself as: ``` $ gem install fluent-plugin-output-solr ``` ## How to build ``` $ gem install bundler $ bundle install $ rake test $ rake build $ rake install ``` ## Config parameters ### url The Solr server url (for example http://localhost:8983/solr/collection1). ``` url http://localhost:8983/solr/collection1 ``` ### zk_host The ZooKeeper connection string that SolrCloud refers to (for example localhost:2181/solr). ``` zk_host localhost:2181/solr ``` ### collection The SolrCloud collection name (default collection1). ``` collection collection1 ``` ### defined_fields The defined fields in the Solr schema.xml. If omitted, it will get fields via Solr Schema API. ``` defined_fields ["id", "title"] ``` ### ignore_undefined_fields Ignore undefined fields in the Solr schema.xml. ``` ignore_undefined_fields false ``` ### unique_key_field A field name of unique key in the Solr schema.xml. If omitted, it will get unique key via Solr Schema API. ``` unique_key_field id ``` ### string_field_value_max_length A string field value max length. If set -1, it means unlimited (default -1). However, there is a limit of Solr. ``` string_field_value_max_length -1 ``` ### time_field A field name of event timestamp in the Solr schema.xml (default time). ``` time_field time ``` ### time_format The format of the time field (default %FT%TZ). ``` time_format %FT%TZ ``` ### time_output_format The format of the time field of Solr. (default %FT%TZ). ``` time_output_format %FT%TZ ``` ### flush_size A number of events to queue up before writing to Solr (default 100). ``` flush_size 100 ``` ### commit_with_flush Send commit command to Solr with flush (default true). ``` commit_with_flush true ``` ## Plugin setup examples ### Sent to standalone Solr using data-driven schemaless mode. ``` @type solr # The Solr server url (for example http://localhost:8983/solr/collection1). url http://localhost:8983/solr/collection1 ``` ### Sent to SolrCloud using data-driven schemaless mode. ``` @type solr # The ZooKeeper connection string that SolrCloud refers to (for example localhost:2181/solr). zk_host localhost:2181/solr # The SolrCloud collection name (default collection1). collection collection1 ``` ## Solr setup examples ### How to setup Standalone Solr using data-driven schemaless mode. 1.Download and install Solr ```sh $ mkdir $HOME/solr $ cd $HOME/solr $ wget https://archive.apache.org/dist/lucene/solr/5.4.0/solr-5.4.0.tgz $ tar zxvf solr-5.4.0.tgz $ cd solr-5.4.0 ``` 2.Start standalone Solr ```sh $ ./bin/solr start -p 8983 -s server/solr ``` 3.Create core ```sh $ ./bin/solr create -c collection1 -d server/solr/configsets/data_driven_schema_configs -n collection1_configs ``` ### How to setup SolrCloud using data-driven schemaless mode (shards=1 and replicationfactor=2). 1.Download and install ZooKeeper ```sh $ mkdir $HOME/zookeeper $ cd $HOME/zookeeper $ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz $ tar zxvf zookeeper-3.4.6.tar.gz $ cd zookeeper-3.4.6 $ cp -p ./conf/zoo_sample.cfg ./conf/zoo.cfg ``` 2.Start standalone ZooKeeper ```sh $ ./bin/zkServer.sh start ``` 3.Download an install Solr ```sh $ mkdir $HOME/solr $ cd $HOME/solr $ wget https://archive.apache.org/dist/lucene/solr/5.4.0/solr-5.4.0.tgz $ tar zxvf solr-5.4.0.tgz $ cd solr-5.4.0 $ ./server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd clear /solr $ ./server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd makepath /solr $ cp -pr server/solr server/solr1 $ cp -pr server/solr server/solr2 ``` 4.Start SolrCloud ```sh $ ./bin/solr start -h localhost -p 8983 -z localhost:2181/solr -s server/solr1 $ ./bin/solr start -h localhost -p 8985 -z localhost:2181/solr -s server/solr2 ``` 5.Create collection ```sh $ ./bin/solr create -c collection1 -d server/solr1/configsets/data_driven_schema_configs -n collection1_configs -shards 1 -replicationFactor 2 ``` ## Development After checking out the repo, run `bundle install` to install dependencies. Then, run `rake test` to run the tests. ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/mosuka/fluent-plugin-output-solr.