Customizing the Elasticsearch-based search solution

The topics in this section describe tasks performed by an application developer to customize the Elasticsearch-based search solution. You can extend the Elasticsearch-based tutorials and Query Service to meet your business requirements.

These topics cover customization of the Search solution. Administrators working with and tuning the service on an ongoing basis can learn about the concepts and tools for this in Commerce+ Solr and Elasticesearch.

Basic architecture

The Elasticsearch Search solution is one component of a unified data environment. This environment is designed as a generic data-management system. The environment includes several major components, including the gateway, data services, and the ZooKeeper configuration management system.

The Redis gateway and ZooKeeper/Registry support the data services. It is the data services that control Search behavior, so you customize Search by extending the Ingest data-uploading subsystem or the Elasticsearch-based Query subsystem. There are four main ways you can do this, as outlined below. In addition, you can develop migration and continuous-delivery strategies based on templates and examples provided by HCL.

Table 1. Customization topicsCommerce Search documentation
Concept Details and audience For more information
Introduction Learn about the customization points in Commerce Search and how they can be used in your implementation:
  • The Ingest service and NiFi pipelines
  • Elasticsearch and its highly scalable indexing system
  • The Query service, which include Natural Language Processing and multi-language capabilities.
  • Migration tools to modernize your Solr customizations.

These topics are for Commerce+ developers who are learning to customize Commerce Search.

Ingest service For an overview of how Commerce Search brings in data for indexing, see Ingest Service. Customizing Ingest typically involves the creation of new NiFi pipelines, which consist of connectors, processors, and process groups.
Search Query API Commerce Search uses a REST API by default to communicate with its microservices. This API is useful for developers who want to extend existing browsing, NLP, and site content features. This API is managed from a root node in ZooKeeper with the name /configuration.

You can add new extensions in child nodes under the root. For example, suppose you need to show products of a particular color and allow search based on color. You can extend the API with a custom endpoint for product search and color as parameter.

If you want to use existing Query service features or an existing index, you can extend the existing Query API by calling the performSearch method from the SearchServiceFacade service provided as part of the query-api.jar.
Search profiles Use search profiles to control the storefront search experience at a page-level. Profiles group together sets of search runtime parameters. You can call default profiles or your own customized ones to control the behavior of the Query service.
Natural Language Processing profiles Natural Language Processor (NLP) profiles are used to control the preprocessing flow of search queries.

You can find the default HCL_NLPProfile.json file in the resources\profiles\nlp directory of query runtime. A NLP profile can also be created through the /profiles REST endpoint and is stored inside of the Zookeeper “nlpprofiles” node.

To understand the basics of customizing NLP profiles, see Natural Language Processing profiles.
Tutorials Learn about Commerce Search by completing tutorials.
Reference Core concepts for administering Commerce Search can be found in the Commerce+ Solr and Elasticesearch section of the Help Center.