Link Search Menu Expand Document Documentation Menu

Monitoring search quality

Introduced 3.4

Search quality is not static. Even if your ranking algorithms remain unchanged, the indexed data evolves, signals such as popularity and recency fluctuate, and user queries shift over time.

To detect and prevent unintended changes in relevance, you should monitor search quality on an ongoing basis. You can configure a cron schedule to run a search evaluation experiment at regular intervals.

Each job can have only one schedule. To modify the schedule, delete the existing schedule and create a new one. Deleting a schedule also removes its associated historical data.

Scheduling a search evaluation using Search Relevance Workbench

After you successfully run a search evaluation for the first time, a clock icon appears that allows you to schedule the experiment, as shown in the following image.

Schedule a Experiment to Run

On the scheduling page, configure how frequently you want the experiment to run, as shown in the following image.

Setting the schedule of how often to run

Evaluating search quality

Once an experiment is scheduled, a new dashboard icon lets you monitor the search results over time. Because the dashboard evaluates results daily, it may take up to 24 hours for the data to populate and display meaningful insights.

Review search quality over time

Scheduling a search evaluation using the API

You can create regularly scheduled experiments using the API. The experiment you are scheduling must already exist.

Endpoint

POST _plugins/_search_relevance/experiments/schedule

Request body fields

The following table lists the available input parameters.

Field Data type Description
experimentId String The experiment ID to rerun.
cronExpression String A cron schedule for running the evaluation in UTC.

Example request

The following request schedules the experiment to run every night at 1 AM:

POST _plugins/_search_relevance/experiments/schedule
{
  "experimentId": "6282afa6-fa14-49c8-a627-ac1d5204d357",
  "cronExpression": "0 1 * * *"
}

Managing scheduled experiments

You can retrieve or delete scheduled experiments using the following APIs.

Retrieve scheduled experiments

This API retrieves the available scheduled experiments.

Endpoints

GET _plugins/_search_relevance/experiments/schedule
GET _plugins/_search_relevance/experiments/schedule/<experiment_id>

Path parameters

The following table lists the available path parameters.

Parameter Data type Description
experiment_id String The ID of the scheduled experiment to retrieve. If not provided, retrieves all scheduled experiments.

Example request

``json GET _plugins/_search_relevance/experiments/schedule/6282afa6-fa14-49c8-a627-ac1d5204d357

<label hidden class="copy-curl-label">copy</label>

#### Example response

```json
{
  "took": 17,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": null,
    "hits": [
      {
        "_index": ".search-relevance-scheduled-experiment-jobs",
        "_id": "6282afa6-fa14-49c8-a627-ac1d5204d357",
        "_score": null,
        "_source": {
          "id": "6282afa6-fa14-49c8-a627-ac1d5204d357",
          "enabled": true,
          "schedule": {
            "cron": {
              "expression": "0 0 * * *",
              "timezone": "America/Los_Angeles"
            }
          },
          "enabledTime": 1758320475601,
          "lastUpdateTime": 1758320475601,
          "timestamp": "2025-09-19T00:00:00.602Z"
        },
        "sort": [
          "2025-09-19T00:00:00.602Z"
        ]
      }
    ]
  }
}

Delete a scheduled experiment

You can delete a scheduled experiment using the scheduled experiment ID.

Endpoint

DELETE _plugins/_search_relevance/experiments/schedule/<experiment_id>

Path parameters

The following table lists the available path parameters.

Parameter Data type Description
experiment_id String The ID of the scheduled experiment to delete.

Example request

DELETE _plugins/_search_relevance/experiments/schedule/6282afa6-fa14-49c8-a627-ac1d5204d357

Example response

{
  "_index": ".search-relevance-scheduled-experiment-jobs",
  "_id": "6282afa6-fa14-49c8-a627-ac1d5204d357",
  "_version": 2,
  "result": "deleted",
  "forced_refresh": true,
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 17,
  "_primary_term": 1
}