Configuring brX Content Search Integration

Configuration

The Content Feed addon can generate full and delta content feeds automatically on a scheduled basis. For details on the differences between full and delta feeds, refer to the brSM Content Search documentation.

Info:
The Content Feed addon relies on dynamic bean generation when serializing Bloomreach Content content. Dynamic beans must remain enabled in your project. See Dynamic Content Beans for instructions on enabling dynamic beans.

If your project uses the Taxonomy or Selections plugins, update the annotated-classes parameter in the CMS webapp's web.xml to include the appropriate classes. For example, to support taxonomy:

<context-param>
    <param-name>hst-beans-annotated-classes</param-name>
    <param-value>classpath*:org/onehippo/taxonomy/**/.class</param-value>
</context-param>

Configure Content Feed

When you install the addon, the following default configuration is bootstrapped under /hippo:configuration/hippo:modules/content-feed:

definitions: config: /hippo:configuration/hippo:modules/content-feed/hippo:moduleconfig/control: fullFeedTime: '01:00' /hippo:configuration/hippo:modules/content-feed/hippo:moduleconfig/metadata: feedCronExpression: 0 */5 * ? * * enabled: false includedPaths: [/content/documents] excludedDocumentTypes: ['resourcebundle:resourcebundle', 'robotstxt:section'] numberOfSiteWebapps : 1 referenceBeanDepthLimit: 2 referenceBeanTotalLimit: 50

The following tables describe each configuration parameter.

Section: control

ParameterDefault valueDescription
fullFeedTime01:00Time of day when the daily full feed is triggered.
maxFullFeedRetryCount3Number of retry attempts if delivery of the feed file fails.
jobStatusRetryCount20Number of attempts to retrieve the status of feed send or feed create operations running on DataConnect. If the operation remains in running or queued status, the system retries every 30 seconds until this limit is reached.

Section: metadata

ParameterDefault valueDescription
feedCronExpression0 */5 * ? * *CRON expression that defines the scheduling interval for delta feeds. See Quartz CRON format for details.
enabledfalseEnables or disables the content feed service. Set to true to activate the service. For blue-green deployments, enable the service only in the active production environment and disable it in the standby environment.
includedPaths[/content/documents]List of JCR paths where the content feed service searches for documents to include in the search index.
excludedDocumentTypes['resourcebundle:resourcebundle', 'robotstxt:section']List of document types to exclude from the content feed.
numberOfSiteWebapps1Number of site webapps that must be registered before feed execution starts.
referenceBeanDepthLimit2Maximum depth for including values from linked documents. A value of 2 includes documents referenced up to two steps away from the current document. Set to 1 to include only directly referenced documents.
referenceBeanTotalLimit50Maximum number of referenced documents to include, subject to the depth limit. Referenced documents that exceed the depth limit are not included, regardless of this value.

Configure Environment-Specific Properties

Add the following properties to an environment-specific HST properties file for the CMS or platform, such as the CMS webapp's hst-config.properties. For details, see HST container configuration documentation.

brx.contentfeed.environment = dev-localhost
  • Set this property to the HST host group that serves live content.
  • Use the host group that matches the target Bloomreach Content environment (for example, prod or staging).
  • This ensures that generated links in content search results are appropriate for the environment.

Configure DataConnect Feed Transfer

Configure the destination for the content feed. The addon delivers the feed to brSM using an SFTP connection. You must provide an SSH key pair unique to your brSM account.

brx.dataconnect.transfer.connection.host = sftp-staging.connect.bloomreach.com (staging) or sftp.connect.bloomreach.com (production)
[Host of the SFTP server]
brx.dataconnect.transfer.connection.port = 22
[Port of the SFTP server]
brx.dataconnect.transfer.connection.username =
[SFTP account username, provided by Bloomreach]
brx.dataconnect.transfer.connection.location = home/<username>
[Remote SFTP directory. The path must start with /home and include the username.]
brx.dataconnect.transfer.connection.privatekeypath =
[File path to the private key for authentication (e.g. ${brc.appconfigpath}/id_rsa.properties). See notes below for key configuration and format.]
brx.dataconnect.transfer.connection.privatekeypassphrase = [Passphrase for the private key, if required.]
brx.dataconnect.transfer.connection.serverhostkey =
AAAAB3NzaC1yc2EAAAADAQABAAABAQCBaNJJwEuhk4QxT4BWqPcsDvbaAR6JWB/Ypq/RV+nifYyBRplhfrgwGtr5EFKM2xK/yo0qO0uSYE8uBiaGAFefJ/f1tNMmwqMdVvp9oWLSvH1e+gqHGqubSKazUCX6AKXJ1ZPw+uG9lM267OwIKTvM8iKteXCafNRvY04bh3oCejWu9Djiu44BaTIjIl4QV9qKLm+lTa4vxvDZPGJDKOIfbuHEFz0H2vXOT478g+C4nojDAsZxbU6mAs/Bqa81BsZKHZiNK0UvYJvtIr0y3f0FFUR6JBUoHY4q0RLw+Mit7DenuGIJdw/t1nDEIikAQ8eGcseZcx+vvh/PmayDtdlh
[Public host key of the SFTP server]
brx.dataconnect.transfer.connection.connect.timeout = 60
[Timeout (in seconds) for establishing the SFTP connection. If the connection is not established within this period, feed execution fails.]

For instructions on configuring a private key in a cloud environment, see Set Environment Configuration Properties. The private key file must use the .properties extension (for example, id_rsa.properties). The provided value for brx.dataconnect.transfer.connection.serverhostkey is the public key for the Bloomreach production server. If you use a different server or environment, contact your Bloomreach representative for the correct host key.

The Content Feed SFTP connection supports RSA-type SSH private keys and some other types, but does not support OpenSSH private keys. On recent Linux and macOS systems, the ssh-keygen command may generate OpenSSH keys by default. To check your key type, inspect the first line of the private key file:

  • OpenSSH keys start with -----BEGIN OPENSSH PRIVATE KEY-----
  • RSA keys start with -----BEGIN RSA PRIVATE KEY-----

To generate a new RSA private key:

ssh-keygen -t rsa

To convert an existing OpenSSH private key to RSA format:

ssh-keygen -p -N <your_new_password> -m pem -f <path-of-your-private-key>

The RSA private key should not be passphrase-protected. If your key is protected, create an unencrypted copy with:

openssl rsa -in <original_private_key_file> -out <new_unencrypted_private_key_file>

Configure DataConnect API

To enable feed generation, configure the client for brSM’s DataConnect API. The DataConnect API triggers creation of a new content search index from an uploaded content feed. Bloomreach Support will provide the required values.

brx.dataconnect.api.baseurl = 
https://api-staging.connect.bloomreach.com/dataconnect/api/v1/ (staging) or
https://api.connect.bloomreach.com/dataconnect/api/v1/ (production)
[DataConnect service URL]
brx.dataconnect.api.key = [your DataConnect API key]
brx.dataconnect.accountId = [your brSM account ID]
brx.dataconnect.catalog = [your brSM catalog name]

Configure Query API

Configure the following properties in the site webapp's hst-config.properties to enable access to the brX Content Search API.

brx.search.uri: [your brSM search API endpoint]
brx.search.accountId:  [your brSM account ID]
brx.search.cache.enabled: false
brx.search.catalogs: [your SM catalogs (comma separated)]

Database Journal Entry Cleanup

When the Content Feed module is enabled, it creates an entry with the key _HIPPO_EXTERNAL_REPO_SYNC_contentFeedExporter in the REPOSITORY_LOCAL_REVISIONS database table. This entry tracks the revision ID of the last successful content export. It prevents the REPOSITORY_JOURNAL table from being cleaned up beyond this revision during Repository Maintenance operations, ensuring that unprocessed changes are not lost.

Important:
If you remove the Content Feed module from your project, this database entry is not deleted automatically. You must remove it manually to prevent orphaned records from blocking journal cleanup:

DELETE FROM REPOSITORY_LOCAL_REVISIONS 
WHERE JOURNAL_ID = '_HIPPO_EXTERNAL_REPO_SYNC_contentFeedExporter';
Share Feedback
Page: /build/enterprise-plugins/brx-content-search/configuring-brx-content-search
Section: Build
Category *
Configuring brX Content Search | Bloomreach Content Documentation