Tridion · Content Delivery · Elastic · Sites 9.5

Tridion Sites – Search Functionality

In Tridion Sites 9.5 release introduced this new feature Tridion Sites Search Content is searchable out of the box, Because the published content is also indexed, it is immediately searchable through GraphQL queries.

Content Delivery now has a built-in search feature using Elasticsearch technology.

In Tridion Sites 9.6 release introduced an additional feature for the sites search to support Semantic search enables you to enhance your websites with a faceted search interface that improves the findability of your content. With the help of an external taxonomy provider, Tridion Sites enhances the Elasticsearch search index and introduces a new concept index. The Content Service makes the information in the taxonomy available for implementation to use the Public Content API to write GraphQL queries.

  • present the taxonomy based faceted search and auto suggestions on a webpage, allowing visitors to filter their search queries
  • apply selected facets search to search queries in order to filter the search results

Why Tridion Sites Search

  • Customers currently have to implement their own solution (SI4T or custom Deployer extension)
  • Optimized for Tridion Sites data model
  • Makes use of existing Elasticsearch infrastructure (XO and Tridion Docs Search)
  • Exposed through existing IQ Query Service (OpenAPI) and now Content Service (GraphQL)

Architecture

Sites Search feature functionality entails:

  • A new prerequisite: an instance of the Elasticsearch product, either on-premises or in the Cloud
  • A new microservice called IQ Indexing Service to index all content published to Content Delivery
  • A new configuration file search.properties for the Content Service or Session-enabled Content Service, in which you configure the Elasticsearch functionality. You can enable or disable search feature in application.properties.
  • New resources for the Content Deployer for Elasticsearch integration, including a client configuration file cd_client_conf.xml, in which to configure the connection to Elasticsearch. In case if you intended to use the add-on to configure your deployer pipelines then add-on package configuration to configure the connection to Elasticsearch

In Content Manager:

Select to mark Content for search indexing

  • Publish and search only relevant content
  • New publishable and searchable field configurations for schemas

Search language

  • Content Search index language based on publication
  • Component and page locale comes from owning publication
  • Locale specific content is indexed independently

In Elasticsearch Service:

  • Download and install the .zip package

Download the .zip archive for Elasticsearch v7.10.0 from: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-windows-x86_64.zip

Unzip it with your favourite unzip tool. This will create a folder called elasticsearch-7.10.0, which we will refer to as %ES_HOME%. In a terminal window, cd to the %ES_HOME% directory, for instance:

cd c:\elasticsearch-7.10.0\bin

.\elasticsearch-service.bat install
.\elasticsearch-plugin install ingest-attachment
.\elasticsearch-plugin install analysis-icu

#After successful elastic search installation, To set the heap sizes, edit jvm.options in the config/ subdirectory or Elasticsearch. The following shows configuration for the minimum recommended values
-Xms512m
-Xmx512m

#Update elasticsearch.yml file for elasticsearch access to remote system and restart the service after the configuration chagnes.
network.host: 0.0.0.0 #Not recommended to enable this for prod setup.
discovery.seed_hosts: ["localhost","127.0.0.1", "[::1]"]

#Elastic search index creation for Sites Search and Docs Search
cd \Content Delivery\roles\iq\elasticsearch
.\installElasticsearchIndexes.ps1 -es-host "localhost" -es-port 9200 -es-scheme "http"

In Content Service:

  • Preconfigured Content Service, By default search feature is enabled
  • Configurable using profile to enable or disable search feature
  • Uses Data pipeline (requires existing Sites content to be republished)
#Content Service
application.properties

# broken: default profile to enable broker results
# search: enables search
spring.profiles.active={springprofilesactive:broker,search}
  • Embedded search provider to reduce inter-service calls
  • Configurable Elasticsearch endpoint
# Content Service
search.properties

es.host=${eshost:localhost}
es.port=${esport:9200}
es.scheme=${esschema:http}
es.username=${esusername:}
es.password=${espassword:}

In Deployer Service:

  • New Deployer pipeline steps
  • Configurable binary indexing type support
<Pipeline Id="Tridion-Process-Deploy" Action="Deploy" Verb="Process">
	<Steps>
		<Step Id="TridionSearchIndexDeployStep">
			<BinaryIndexing extensions="${binaryextension:-pdf,doc,docx,xls,xlsx,ppt,pptx,odt}"/>
			<Transaction
					failPipelineTransactionOnFatalIndexingError="${failtransactiononfatalindexingerror:-true}"/>
			<RetryPoint PipelineId="Tridion-Process-Deploy" StepId="TridionSearchIndexDeployStep"/>
		</Step>
	</Steps>
</Pipeline>
<Pipeline Id="Tridion-Process-Undeploy" Action="Undeploy" Verb="Process">
	<Steps>
		<Step Id="TridionSearchIndexUnDeployStep">
			<Transaction
					failPipelineTransactionOnFatalIndexingError="${failtransactiononfatalindexingerror:-true}"/>
			<RetryPoint PipelineId="Tridion-Process-Undeploy" StepId="TridionSearchIndexUnDeployStep"/>
		</Step>
	</Steps>
</Pipeline>

The Content Deployer for Elasticsearch integration needs client configuration file cd_client_conf.xml, in which to configure the connection to Elasticsearch. In case if you intended to use the add-on to configure your deployer pipelines then add-on package configuration to configure the connection to Elasticsearch.

For Tridion Sites without xo feature: Add-on package (deployer + search feature pipelines steps)

\Content Delivery\roles\deployer\add-ons\udp-deployer-web-extension-assembly-11.5.0-1118-search.zip
\Content Delivery\roles\deployer\add-ons\udp-deployer-web-extension-assembly-11.x.0-xxxx-search-config.json

For Tridion DX setup for Sites and Docs: Add-on package (deployer + ish + search feature pipelines steps)

\Content Delivery\roles\deployer\add-ons\udp-deployer-dx-extension-assembly-11.x.0-xxx-search.zip
\Content Delivery\roles\deployer\add-ons\udp-deployer-dx-extension-assembly-11.x.0-xxxx-search-config.json

For Tridion Sites with XO enabled: Add-on package (deployer + xo + search feature pipelines steps)

\Content Delivery\roles\xo\add-on\xo-deployer-cx-extension-assembly-11.x.0-xxxx-core.zip
\Content Delivery\roles\xo\add-on\xo-deployer-extension-assembly-11.x.0-xxxx-core-config.json

In IQ Index Service:

For Tridion sites search, IQ Index service is only mandatory, while installing the service needs to pass the elastic search instance configurations

.\installService.ps1 --auto-register '-Des.host = es.tridiondemo.com','-Des.port = 9200','-Des.scheme = http','-Des.ingest.host = es.tridiondemo.com','-Des.ingest.port = 9200','-Des.in
gest.scheme = http'

In case if you have any questions or queries please raise them in Tridion StackExchange.

Leave a comment