8 min read

Configure the search requestors

Requestors manage the execution of an endpoint request and return a result. The Search microservice has two built-in requestors:

When you configure the requestors, you specify the requestor type, product catalogue collection affected, the features to be used, and any post-processors to be run after executing the feature. The post-processors let you modify every result after the result has been built. For example, to add new fields. Each post-processor has its own configuration.

note

You need to create the features in the feature configuration before configuring the endpoint.

Default Query Requestor

All features except links use the DefaultQueryRequestorFactory requestor. This requestor can be customized to the customer's requirements. It uses the standard requestors parameters.

requestors parameters

Field Description Type Default value
requestorId Name of the requestor, e.g. product catalogue Yes String
type Type of requestor. To use the DefaultQueryRequestorFactory requestor, enter default. Enter links to use the LinksQueryRequestor requestor (required) String default
mainCollectionId ID of the indexed product catalogue collection.
If you do not have this ID, ask Partner enablement (required)
String ---
features List of all features associated with the requestor (required) Array ---
postprocessors Collection of processors executed after the feature cycle (required) Array ---
redisCached Determines whether a Redis cache is activated for the requestor. If you set this to true, enter a value in redisTTL (optional) Boolean false
redisTTL Number of seconds to save data in cache (optional) Integer ---

coding tip

You can use a Redis cache for the requestor and determine the number of seconds of data to save in cache in the redisTTL parameter. This parameter is useful where your customer has high traffic in the store or during the sales period. The greater the TTL (time-to-live) value, the greater the time between cached responses, and hence the greater the response and the lower impact on the search engine. However, the results may be less up-to-date and it may take longer to see any changes in configuration (for example, changes in product attribute weighting made in Equalize). If you plan to use Redis, you need to add the redis.enabled environment variable as true, and redis.nodes containining the value of the Redis URL available to connect to it. The Redis service must be configured without authorization, as it is not supported by the search service.

You cannot enable a Redis cache for the LinksQueryRequestor. The current date is added to each Elasticsearch query, so this information changes in every request.

Configuration example

        "requestors": [
            {
                "requestorId": "catalog",
                "type": "default",
                "features": {
                    "search": [
                        "browsingSearch",
                        "sorting",
                        "pagination",
                        "filtering",
                        "faceting",
                        "boosting",
                        "grouping",
                        "searchHits",
                        "totalHits",
                        "debug"
                    ]
                },
                "redisCached": true,
                "redisTTL": 250,
                "mainCollectionId": "empathy"
            }
        ]

This requestor is made for requesting blocks of information from links index. There are three types of links: Redirections, Promotions, and Banners.

The requestor returns a previously configured URL when searching from a query. Promotions and banners also return the previously configured image.

warning

You must have set up a linkscollection in the index. A 500 error code is returned if the collection does not exist.

In addition to the requestor parameters, in the config block, the query parameter is used to find the link associated to the parameter. The filters configured are used to delimit the links returned. For example, ?query=home&lang=es&scope=desktop.
Links are returned ordered by priority (weight), and then by updated date. If no query is sent, all the links marked as match_all in the Playboard are returned.

Links are applied over certain criteria. When a link has a filter configured, it is only retrieved if the parameter exists in the request and has the same value as the configured link. When a link is configured with a filter with multiple values, that link is returned if the parameter exists in the request and has one of the values configured.

config parameters

Field Description Type Default value
linkType Type of link to retrieve. Available values: DIRECT, PROMOTED, BANNER (required) String ---
queryParamFilters Filters to apply (required) String ---

queryParamFilters parameters

Field Description Type Default value
queryParam Parameter of the query to retrieve the value from (required) Array ---
field Field to filter the content of the value of the queryParam (optional) String queryParam

Configuration example

        "requestors": [
          {
                "requestorId": "direct",
                "type": "links",
                "redisCached": false,
                "mainCollectionId": "empathy",
                "secondaryCollectionId": "empathy",
                "config": {
                    "linkType": "DIRECT",
                    "queryParamFilters": [
                        {
                            "field": "langs",
                            "queryParam": "lang"
                        },
                        {
                            "field": "filters.scope",
                            "queryParam": "scope"
                        }
                    ]
                }
            }
        ]