---
apiVersion: v1
kind: List
items:
- apiVersion: v1
kind: ConfigMap
metadata:
labels:
funktion.fabric8.io/kind: Connector
provider: fabric8
project: connector-solr
version: 1.1.37
group: io.fabric8.funktion.connector
name: solr
data:
deployment.yml: |
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
funktion.fabric8.io/kind: Subscription
connector: solr
spec:
replicas: 1
template:
metadata:
labels:
funktion.fabric8.io/kind: Subscription
connector: solr
spec:
containers:
- image: funktion/connector-solr:1.1.37
name: connector
schema.yml: |
---
component:
kind: component
scheme: solr
alternativeSchemes: solr,solrs,solrCloud
syntax: solr:url
title: Solr
description: The solr component allows you to interface with an Apache Lucene Solr server.
label: monitoring,search
deprecated: false
async: false
producerOnly: true
javaType: org.apache.camel.component.solr.SolrComponent
groupId: org.apache.camel
artifactId: camel-solr
version: 2.18.1
componentProperties: {}
properties:
url:
kind: path
group: producer
required: true
type: string
javaType: java.lang.String
deprecated: false
secret: false
description: Hostname and port for the solr server
order: 0
allowCompression:
kind: parameter
group: producer
type: boolean
javaType: java.lang.Boolean
deprecated: false
secret: false
description: Server side must support gzip or deflate for this to have any effect
order: 1
connectionTimeout:
kind: parameter
group: producer
type: integer
javaType: java.lang.Integer
deprecated: false
secret: false
description: connectionTimeout on the underlying HttpConnectionManager
order: 2
defaultMaxConnectionsPerHost:
kind: parameter
group: producer
type: integer
javaType: java.lang.Integer
deprecated: false
secret: false
description: maxConnectionsPerHost on the underlying HttpConnectionManager
order: 3
followRedirects:
kind: parameter
group: producer
type: boolean
javaType: java.lang.Boolean
deprecated: false
secret: false
description: indicates whether redirects are used to get to the Solr server
order: 4
maxRetries:
kind: parameter
group: producer
type: integer
javaType: java.lang.Integer
deprecated: false
secret: false
description: Maximum number of retries to attempt in the event of transient errors
order: 5
maxTotalConnections:
kind: parameter
group: producer
type: integer
javaType: java.lang.Integer
deprecated: false
secret: false
description: maxTotalConnection on the underlying HttpConnectionManager
order: 6
requestHandler:
kind: parameter
group: producer
type: string
javaType: java.lang.String
deprecated: false
secret: false
description: Set the request handler to be used
order: 7
soTimeout:
kind: parameter
group: producer
type: integer
javaType: java.lang.Integer
deprecated: false
secret: false
description: Read timeout on the underlying HttpConnectionManager. This is desirable for queries but probably not for indexing
order: 8
streamingQueueSize:
kind: parameter
group: producer
type: integer
javaType: int
deprecated: false
secret: false
defaultValue: "10"
description: Set the queue size for the StreamingUpdateSolrServer
order: 9
streamingThreadCount:
kind: parameter
group: producer
type: integer
javaType: int
deprecated: false
secret: false
defaultValue: "2"
description: Set the number of threads for the StreamingUpdateSolrServer
order: 10
synchronous:
kind: parameter
group: advanced
label: advanced
type: boolean
javaType: boolean
deprecated: false
secret: false
defaultValue: false
description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
order: 11
collection:
kind: parameter
group: solrCloud
label: solrCloud
type: string
javaType: java.lang.String
deprecated: false
secret: false
description: Set the collection name which the solrCloud server could use
order: 12
zkHost:
kind: parameter
group: solrCloud
label: solrCloud
type: string
javaType: java.lang.String
deprecated: false
secret: false
description: Set the ZooKeeper host information which the solrCloud could use such as zkhost=localhost:8123.
order: 13
documentation.adoc: |+
[[Solr-SolrComponent]]
Solr Component
~~~~~~~~~~~~~~
*Available as of Camel 2.9*
The Solr component allows you to interface with an
http://lucene.apache.org/solr/[Apache Lucene Solr] server (based on
SolrJ 3.5.0).
Maven users will need to add the following dependency to their `pom.xml`
for this component:
[source,xml]
------------------------------------------------------------
org.apache.camel
camel-solr
x.x.x
------------------------------------------------------------
[[Solr-URIformat]]
URI format
^^^^^^^^^^
*NOTE:* solrs and solrCloud are new added since *Camel 2.14*.
[source,java]
--------------------------------------
solr://host[:port]/solr?[options]
solrs://host[:port]/solr?[options]
solrCloud://host[:port]/solr?[options]
--------------------------------------
[[Solr-Options]]
Solr Options
^^^^^^^^^^^^
// component options: START
The Solr component has no options.
// component options: END
// endpoint options: START
The Solr component supports 14 endpoint options which are listed below:
{% raw %}
[width="100%",cols="2,1,1m,1m,5",options="header"]
|=======================================================================
| Name | Group | Default | Java Type | Description
| url | producer | | String | *Required* Hostname and port for the solr server
| allowCompression | producer | | Boolean | Server side must support gzip or deflate for this to have any effect
| connectionTimeout | producer | | Integer | connectionTimeout on the underlying HttpConnectionManager
| defaultMaxConnectionsPerHost | producer | | Integer | maxConnectionsPerHost on the underlying HttpConnectionManager
| followRedirects | producer | | Boolean | indicates whether redirects are used to get to the Solr server
| maxRetries | producer | | Integer | Maximum number of retries to attempt in the event of transient errors
| maxTotalConnections | producer | | Integer | maxTotalConnection on the underlying HttpConnectionManager
| requestHandler | producer | | String | Set the request handler to be used
| soTimeout | producer | | Integer | Read timeout on the underlying HttpConnectionManager. This is desirable for queries but probably not for indexing
| streamingQueueSize | producer | 10 | int | Set the queue size for the StreamingUpdateSolrServer
| streamingThreadCount | producer | 2 | int | Set the number of threads for the StreamingUpdateSolrServer
| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
| collection | solrCloud | | String | Set the collection name which the solrCloud server could use
| zkHost | solrCloud | | String | Set the ZooKeeper host information which the solrCloud could use such as zkhost=localhost:8123.
|=======================================================================
{% endraw %}
// endpoint options: END
[[Solr-MessageOperations]]
Message Operations
^^^^^^^^^^^^^^^^^^
The following Solr operations are currently supported. Simply set an
exchange header with a key of "SolrOperation" and a value set to one of
the following. Some operations also require the message body to be set.
* the INSERT operations use the
http://lucene.apache.org/solr/api/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.html[CommonsHttpSolrServer]
* the INSERT_STREAMING operations use the
http://lucene.apache.org/solr/api/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.html[StreamingUpdateSolrServer]
(*Camel 2.9.2*)
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Operation |Message body |Description
|INSERT/INSERT_STREAMING |n/a |adds an index using message headers (must be prefixed with "SolrField.")
|INSERT/INSERT_STREAMING |File |adds an index using the given File (using ContentStreamUpdateRequest)
|INSERT/INSERT_STREAMING |SolrInputDocument |*Camel 2.9.2* updates index based on the given SolrInputDocument
|INSERT/INSERT_STREAMING |String XML |*Camel 2.9.2* updates index based on the given XML (must follow
SolrInputDocument format)
|ADD_BEAN |bean instance |adds an index based on values in an
http://wiki.apache.org/solr/Solrj#Directly_adding_POJOs_to_Solr[annotated
bean]
|ADD_BEANS |collection |*Camel 2.15* adds index based on a collection of
http://wiki.apache.org/solr/Solrj#Directly_adding_POJOs_to_Solr[annotated
bean]
|DELETE_BY_ID |index id to delete |delete a record by ID
|DELETE_BY_QUERY |query string |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
|=======================================================================
[[Solr-Example]]
Example
^^^^^^^
Below is a simple INSERT, DELETE and COMMIT example
[source,java]
---------------------------------------------------------------------------------------
from("direct:insert")
.setHeader(SolrConstants.OPERATION, constant(SolrConstants.OPERATION_INSERT))
.setHeader(SolrConstants.FIELD + "id", body())
.to("solr://localhost:8983/solr");
from("direct:delete")
.setHeader(SolrConstants.OPERATION, constant(SolrConstants.OPERATION_DELETE_BY_ID))
.to("solr://localhost:8983/solr");
from("direct:commit")
.setHeader(SolrConstants.OPERATION, constant(SolrConstants.OPERATION_COMMIT))
.to("solr://localhost:8983/solr");
---------------------------------------------------------------------------------------
[source,xml]
------------------------------------------
INSERT
${body}
DELETE_BY_ID
COMMIT
------------------------------------------
A client would simply need to pass a body message to the insert or
delete routes and then call the commit route.
[source,java]
-----------------------------------------------
template.sendBody("direct:insert", "1234");
template.sendBody("direct:commit", null);
template.sendBody("direct:delete", "1234");
template.sendBody("direct:commit", null);
-----------------------------------------------
[[Solr-QueryingSolr]]
Querying Solr
^^^^^^^^^^^^^
Currently, this component doesn't support querying data natively (may be
added later). For now, you can query Solr using link:http.html[HTTP] as
follows:
[source,java]
--------------------------------------------------------------------------------
//define the route to perform a basic query
from("direct:query")
.recipientList(simple("http://localhost:8983/solr/select/?q=${body}"))
.convertBodyTo(String.class);
...
//query for an id of '1234' (url encoded)
String responseXml = (String) template.requestBody("direct:query", "id%3A1234");
--------------------------------------------------------------------------------
For more information, see these resources...
http://lucene.apache.org/solr/tutorial.html#Querying+Data[Solr Query
Tutorial]
http://wiki.apache.org/solr/SolrQuerySyntax[Solr Query Syntax]
[[Solr-SeeAlso]]
See Also
^^^^^^^^
* link:configuring-camel.html[Configuring Camel]
* link:component.html[Component]
* link:endpoint.html[Endpoint]
* link:getting-started.html[Getting Started]