--- apiVersion: v1 kind: List items: - apiVersion: v1 kind: ConfigMap metadata: labels: funktion.fabric8.io/kind: Connector provider: fabric8 project: connector-solr version: 1.1.41 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.41 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]