Setting up the HCL Commerce Developer Search environment
HCL Commerce Version 9.1 provides support for Elasticsearch by default. Use the HCL Commerce Developer Search environment to make customizations to the search solution.
Before you begin
The HCL Commerce Developer Search environment requires the following before you can use it to develop your Elasticsearch-based search customizations:
-
Important: The Elasticsearch-based Search solution is resource intensive. It is recommended to dedicate standalone hardware or hosted virtual machine resources and not run it on a local development machine.
-
Before installing HCL Commerce Developer software, ensure that your HCL Commerce development environment meets the hardware and software requirements.
- For software requirements, see Supported software levels, fixes, and settings for HCL Commerce.
- For hardware requirements, see Hardware requirements for HCL Commerce.
- The HCL Commerce Developer Search environment requires a
database.
The HCL Commerce Developer Search environment supports IBM Db2 Database and
Oracle Database. For more information about installing and
configuring a development environment database,
see Install and configure your development
environment database. - HCL Cache caches classes that can be modified in newer versions of HCL Commerce. To avoid errors in de-serializing an old version of the class, it is strongly recommended to clear Redis keys after upgrading HCL Commerce. Redis keys can be cleared with the Redis flushdb or flushall commands.
Note: When using Microsoft Windows:- Ensure that ample resources are allocated to
Docker.
To allocate resources to Docker, right click on your Docker executable, or shortcut to it, and select Advanced. Allocate at minimum: 8 CPU cores, 32GB of memory, and 80GB of storage to ensure adequate performance.
- Ensure that the following network setting is
enabled within the settings:
Expose daemon on tcp://localhost:2375 port
Procedure
- Obtain the HCL Commerce Docker images.To start the deployment process, download the required software.
- Review the list of the latest available download packages to ensure that you are obtaining the most up-to-date version of HCL Commerce software.
- Navigate to the My HCLSoftware portal.
- Search for Package ID HCL_Commerce_Devops_Version_9.1, or File ID HCL_Commerce_DevOps_9.1.x.x.bundle.
- Download the file.
- Download the Data Docker images.
- HCL_Commerce_Enterprise_9.1.x.x_Data_Query_Server_x86-64.tgz
- HCL_Commerce_Enterprise_9.1.x.x_Data_NiFi_Server_x86-64.tgz
- HCL_Commerce_Enterprise_9.1.x.x_Data_NiFi_Registry_Server_x86-64.tgz
- HCL_Commerce_Enterprise_9.1.x.x_Data_Ingest_Server_x86-64.tgz
- Optional:HCL_Commerce_Enterprise_9.1.x.x_Approval_Server_x86-64.tgz
- Optional:HCL_Commerce_Enterprise_9.1.x.x_GraphQL_Server_x86-64.tgz
docker load -i imagenameFor example:
docker load -i HCL_Commerce_Enterprise_9.1.0.0_Data_Query_Server_x86-64.tgz - Clone the project in Git from the downloaded
git bundle, and check the code into your source
control management system. Run the following
command.
Where:git clone bundleName projectName- bundleName
- The filename of the bundle you are cloning.
- projectName
- The name of the git project that you are creating.
git clone HCL_Commerce_DevOps_9.1.0.0.bundle HCL_Commerce_DevOps
-
Deploy the HCL Commerce Elasticsearch-based Search
solution.
Deployment option #1:
Deploy the Elasticsearch-based Search solution via
the deployment script.This option is limited to deployment within a Linux environment, due to the reliance on Bash scripts (.sh files).
- Update the
env.sh bash script with the
details of your environment.
- Open env.sh for editing.
- Set the following environment details
depending on your version of HCL Commerce.
For HCL Commerce
9.1.12.0 and greater, the following values must be
set:SEARCH_ENGINE=elasticsearch DEPLOY_TYPE=toolkit LICENSE_ACCEPTED=accept TOOLKIT_HOST=<toolkitHost> TOOLKIT_HOST_IP=<toolkitHostIP> SEARCH_HOST=<searchHost> SEARCH_HOST_IP=<searchHostIP> DB_TYPE=<db2|oracle> DB_HOST=<databaseHost> DB_NAME=<databaseName> DB_USER=<databaseUser> DB_PASS=<databaseUserPassword> SEARCH_QUERY_IMAGE=<searchQueryImage> SEARCH_NIFI_IMAGE=<searchNifiImage> SEARCH_REGISTRY_IMAGE=<searchRegistryImage> SEARCH_INGEST_IMAGE=<searchIngestImage> SPIUSER_PWD_ENCRYPTED=<encryptedSpiUserPassord> ADMIN_SPIUSER_PWD=<plainTextSpiuserPassword> SPIUSER_PWD_BASE64=<base46SpiuserPassword>
For
HCL Commerce 9.1.12.0 and greater,
optionally set the following
configurations:APPROVAL_ENABLED=<true|false> APPROVAL_APP_IMAGE=<approvalImage> SESSION_KEY_ENCRYPT=<encryptedSessionKey> GRAPHQL_ENABLED=<true|false> GRAPHQL_APP_IMAGE=<graphqlImage> ALLOW_TELEMETRY=<yes|no> CACHE_ENABLED=<true|false> CACHE_APP_IMAGE=<cacheManagerImage>- For HCL Commerce 9.1.0.0 to
9.1.11.0:
SEARCH_ENGINE=elasticsearch DEPLOY_TYPE=data DATA_FOR_TOOLKIT=true LICENSE_ACCEPTED=accept TOOLKIT_HOST=<toolkitHost> DB_TYPE=<db2|oracle> DB_HOST=<databaseHost> DB_NAME=<databaseName> DB_USER=<databaseUser> DB_PASS=<databaseUserPassword> SEARCH_QUERY_IMAGE=<searchQueryImage> SEARCH_NIFI_IMAGE=<searchNifiImage> SEARCH_REGISTRY_IMAGE=<searchRegistryImage> SEARCH_INGEST_IMAGE=<searchIngestImage> SPIUSER_PWD_ENCRYPTED=<encryptedSpiUserPassord> ADMIN_SPIUSER_PWD=<plainTextSpiuserPassword> SPIUSER_PWD_BASE64=<base46SpiuserPassword>
Note:- For more information on the env.conf configuration file, review The Docker Compose deployment env.sh configuration file.
- Save and close the file.
- Back up the env.sh script containing your environment details for future deployment.
- If you are using an Oracle database, ensure that there is a copy of the required JDBC driver (ojdbc8.jar) located within the volumes/jdbc/ directory.
- Run the deployment bash
script.
./deploy.shThis script produces an Elasticsearch-based Search Docker Compose file that is based on the environment configuration in env.sh.
For HCL Commerce
9.1.12.0 and greater, this file is
docker-compose-toolkit.yml.- For HCL Commerce 9.1.0.0 to 9.1.11.0, this file is docker-compose-data.yml.
The deployment will set the project to
commerce, so the created Docker services will havecommerce_prefix. For example,commerce_nifi_1.The deployment script will automatically start the deployment.
- Update the
env.sh bash script with the
details of your environment.
Deployment option #2:
Deploy the platform manually.This option is the only deployment that is compatible with a Windows host operating system, due to its non-reliance on Bash scripts (.sh files).
- Create a Docker Compose deployment file for
your environment.
- Select a deployment Docker Compose template
file based on the database that you will use for
the deployment.
The template files are follow the naming convention: docker-compose-elasticsearch-data-<DB_TYPE>-toolkit-template.yml.
Where <DB_TYPE> can be db2 or oracle.
- Copy the template into your Docker Compose deployment file (docker-compose-toolkit.yml).
- Add optional services to your Docker Compose
deployment file
(docker-compose-toolkit.yml).
- GraphQL (docker-compose-elasticsearch-svc-graphql-toolkit-template.yml)
- Cache Manager (docker-compose-elasticsearch-data-toolkit-cache-app-svc-template.yaml)
Approval server (
docker-compose-svc-approval-toolkit-template.yml)Note: In addition to including the content from this Docker Compose template, to enable the Approval server you must overwrite volumes/approval-app/boot-config/app-secure.properties with the contents of volumes/approval-app/boot-config/app-secure.properties.nonssl.
- Select a deployment Docker Compose template
file based on the database that you will use for
the deployment.
- Update the env.sh bash script with the details of your environment using the instructions from Step 2.a.
- Copy your configured env.sh values into the Docker .env file on the same level as your Docker Compose file (docker-compose-toolkit.yml). This allows for docker-compose to use these environment variables in the deployment.
- Set file permission for your persistent
volumes.
Some volumes are mounted to your running containers and require write permissions.
Ensure that you recursively set write access to /volumes/, to ensure that it and all of the contained sub-directories are writable.
- Run the following command to start the
HCL Commerce Elasticsearch Search
solution.
docker-compose up -d
- Create a Docker Compose deployment file for
your environment.
- Legacy deployment option: Deploy a legacy
version of the platform manually. In the event that you need to support an older version of HCL Commerce 9.1, this option is the only method available for deploying its corresponding Elasticsearch-based solution.
- This deployment option is no longer supported with HCL Commerce 9.1.6.0 and greater.
- This is the only deployment option for HCL Commerce versions 9.1.0.0 through 9.1.5.0.
- From the docker-compose
folder, copy the file
docker-compose-elasticSearch-data-db2-toolkit-template.yml
or
docker-compose-elasticSearch-data-oracle-toolkit-template.yml
to docker-compose.yml. - Update the .yml image tag
for all HCL Commerce Docker containers.
- Determine the image repository and tag by running the Docker images.
- Update each image tag in the
.yml file with the its
respective
repository:tag.
For example,
image: commerce/search-nifi-app:9.1.0.0
- Accept the LICENSE
parameter for all HCL Commerce docker
containers, for example:
- LICENSE=accept - Update the following configuration for Nifi to
point to the HCL Commerce development environment
database.
AUTH_JDBC_URL: "jdbc:DBType://DBHost:50000/mall" AUTH_JDBC_DRIVER_LOCATION: "/opt/nifi/nifi-current/lib/DBDriver" AUTH_JDBC_USER_NAME: "DBUser" AUTH_JDBC_USER_PASSWORD: "DBUserPassword" NLP_ENABLE_LANGUAGE_CODE: "nlpEnableLanguageCode"For example:

AUTH_JDBC_URL: "jdbc:db2://tk.hclcommerce.com:50000/mall" AUTH_JDBC_DRIVER_LOCATION: "/opt/nifi/nifi-current/lib/db2jcc4.jar" AUTH_JDBC_USER_NAME: "wcs" AUTH_JDBC_USER_PASSWORD: "wcs1" NLP_ENABLE_LANGUAGE_CODE: "EN"
AUTH_JDBC_URL: "jdbc:oracle:thin:@//tk.hclcommerce.com:1521/orclpdb1" AUTH_JDBC_DRIVER_CLASSNAME: "oracle.jdbc.driver.OracleDriver" AUTH_JDBC_DRIVER_LOCATION: "/opt/nifi/nifi-current/lib/ojdbc8.jar" AUTH_JDBC_USER_NAME: "wcs" AUTH_JDBC_USER_PASSWORD: "wcs1" NLP_ENABLE_LANGUAGE_CODE: "EN" - Update the configuration for
data-query.
TX_HOST: "TXHost"For example:
TX_HOST: "tk.hclcommerce.com" - Create the following sub-directories within in
the same directory where
docker-compose.yml is
located, and ensure that their permissions are set
to
777.Important: If you are upgrading from 9.1.0.0 or 9.1.1.0 to a newer version of HCL Commerce, or if you have any issues related to the search index or NiFi service connector, you must delete the contents of these directories.- nifiLogs
elasticsearch/data
elasticsearch/config
zookeeper
nifi/data
redis/data
Copy the
hcl-cache-search folder to
the location where the Docker Compose file
(docker-compose.yml) is
located.- If you are using an Oracle or database, ensure that there is a copy of the required JDBC driver (ojdbc8.jar) in the same directory where the Docker compose file (docker-compose.yml) is located.
- Run the following command to start the
HCL Commerce Elasticsearch Search
solution.
docker-compose up -d
- Verify that all the containers are up and healthy.
- Set your HCL Commerce development environment Elasticsearch environment
variables.
Note: If you want to change back to the Solr search engine at a later data, make a backup of jndi.xml under Liberty_Dir\usr\servers\crsServer\configDropins\overrides\, and namebindings.xml under WCDE_InstallDir\wasprofile\config\cells\localhost\nodes\localhost\servers\server1\. Then, you can revert to Solr with your Elasticsearch settings backed up.
- Optional:
Enable the HCL Commerce Cache Manager application.
Note: For releases
of HCL Commerce 9.1.12.0 and greater, the
Cache Manager application can be deployed more
easily by updating the env.sh
file with
CACHE_ENABLED=trueand then specifying theCACHE_APP_IMAGE.
If you are upgrading from HCL Commerce 9.1.11.0 to
9.1.12.0 or greater, you must update the database to launch
the Emerald or Sapphire marketplace.
In a database command prompt, run the following SQL.insert into storeconf values(32,'hcl.marketplace.self-registration','true',1); insert into storeconf values(31,'hcl.marketplace.self-registration','true',1);
Results
Your HCL Commerce development environment is now configured to develop Elasticsearch-based search customizations.
redisHost 