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.