Solr Component
Available as of Camel 2.9
The Solr component allows you to interface with an Apache Lucene Solr server.
Maven users will need to add the following dependency to their pom.xml
for this component:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-solr</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
URI format
solr://host[:port]/solr?[options]
Operations
The following operations are currently supported. The header SolrConstants.OPERATION is required to be set to one of the following.
operation |
message body value |
description |
---|---|---|
INSERT |
N/A |
insert a new record based on headers values (headers must be prefixed with "SolrField.") |
ADD_BEAN |
bean instance |
insert a new record based on values in an annotated bean |
DELETE_BY_ID |
id to delete |
delete a record by ID |
DELETE_BY_QUERY |
query to use |
delete a record by a query |
COMMIT |
N/A |
performs a commit on any pending index changes |
ROLLBACK |
N/A |
performs a rollback on any pending index changes |
OPTIMIZE |
N/A |
performs a commit on any pending index changes and then runs the optimize command |
Example
Below is a simple INSERT example in Java and Spring XML.
from("direct:start") .setHeader(SolrConstants.OPERATION, constant(SolrConstants.OPERATION_INSERT)) .setHeader(SolrConstants.FIELD + "id", body()) .to("solr://localhost:8983/solr");
<route> <from uri="direct:start"/> <setHeader headerName="SolrOperation"> <constant>INSERT</constant> </setHeader> <setHeader headerName="SolrField.id"> <simple>${body}</simple> </setHeader> <to uri="solr://localhost:8983/solr"/> </route>
A client would simply need to pass a body message to this route as follows.
template.sendBody("direct:start", "value1");
Querying Solr
Currently, this component doesn't support querying data (will be added later). For now, you can query Solr in a route using HTTP.
TODO: add a simple example to retrieve the data inserted above.
For more information, see these resources...