이 콘텐츠는 선택한 언어로 제공되지 않습니다.

Chapter 307. Solr Component


Available as of Camel version 2.9

The Solr component allows you to interface with an 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:

<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>

307.1. URI format

NOTE: solrs and solrCloud are new added since Camel 2.14.

solr://host[:port]/solr?[options]
solrs://host[:port]/solr?[options]
solrCloud://host[:port]/solr?[options]

307.2. Solr Options

The Solr component has no options.

The Solr endpoint is configured using URI syntax:

solr:url

with the following path and query parameters:

307.2.1. Path Parameters (1 parameters):

NameDescriptionDefaultType

url

Required Hostname and port for the solr server

 

String

307.2.2. Query Parameters (13 parameters):

NameDescriptionDefaultType

allowCompression (producer)

Server side must support gzip or deflate for this to have any effect

 

Boolean

connectionTimeout (producer)

connectionTimeout on the underlying HttpConnectionManager

 

Integer

defaultMaxConnectionsPer Host (producer)

maxConnectionsPerHost on the underlying HttpConnectionManager

 

Integer

followRedirects (producer)

indicates whether redirects are used to get to the Solr server

 

Boolean

maxRetries (producer)

Maximum number of retries to attempt in the event of transient errors

 

Integer

maxTotalConnections (producer)

maxTotalConnection on the underlying HttpConnectionManager

 

Integer

requestHandler (producer)

Set the request handler to be used

 

String

soTimeout (producer)

Read timeout on the underlying HttpConnectionManager. This is desirable for queries, but probably not for indexing

 

Integer

streamingQueueSize (producer)

Set the queue size for the StreamingUpdateSolrServer

10

int

streamingThreadCount (producer)

Set the number of threads for the StreamingUpdateSolrServer

2

int

synchronous (advanced)

Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported).

false

boolean

collection (solrCloud)

Set the collection name which the solrCloud server could use

 

String

zkHost (solrCloud)

Set the ZooKeeper host information which the solrCloud could use, such as zkhost=localhost:8123.

 

String

307.3. 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.

OperationMessage bodyDescription

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 annotated bean

ADD_BEANS

collection<bean>

Camel 2.15 adds index based on a collection of 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

307.4. Example

Below is a simple INSERT, DELETE and COMMIT example

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");
<route>
    <from uri="direct:insert"/>
    <setHeader headerName="SolrOperation">
        <constant>INSERT</constant>
    </setHeader>
    <setHeader headerName="SolrField.id">
        <simple>${body}</simple>
    </setHeader>
    <to uri="solr://localhost:8983/solr"/>
</route>
<route>
    <from uri="direct:delete"/>
    <setHeader headerName="SolrOperation">
        <constant>DELETE_BY_ID</constant>
    </setHeader>
    <to uri="solr://localhost:8983/solr"/>
</route>
<route>
    <from uri="direct:commit"/>
    <setHeader headerName="SolrOperation">
        <constant>COMMIT</constant>
    </setHeader>
    <to uri="solr://localhost:8983/solr"/>
</route>

A client would simply need to pass a body message to the insert or delete routes and then call the commit route.

    template.sendBody("direct:insert", "1234");
    template.sendBody("direct:commit", null);
    template.sendBody("direct:delete", "1234");
    template.sendBody("direct:commit", null);

307.5. Querying Solr

Currently, this component doesn’t support querying data natively (may be added later). For now, you can query Solr using HTTP as follows:

//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…​

Solr Query Tutorial

Solr Query Syntax

307.6. See Also

  • Configuring Camel
  • Component
  • Endpoint
  • Getting Started
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.