ActiveCollab uses ElasticSearch to power its search feature. ElasticSearch is an optional system requirement, but without it ActiveCollab's search will always return empty results.

Checking ElasticSearch Status #

ElasticSearch is a web service that communicates using HTTP. This means that you can use your web browser to check its status. Just insert hostname and correct port number in the address bar of your browser.

When everything is OK, you will get a JSON response similar to this:

Two important bits are outlined on the screenshot:

  1. ElasticSearch host. You will need to copy and paste this value into ActiveCollab when connecting the two systems,
  2. ElasticSearch version. That info is needed for compatibility check that is explained later in this troubleshooting guide.

If ElasticSearch is not running, or it is broken, you will not get that type of response. Instead, you will get a standard browser error that will declare that service is unavailable. Example, from Google Crome:

In that case, you need to check if you entered the host and ports correctly, and that ElasticSearch is actually running.

Version Compatibility #

Different versions of ActiveCollab work with different versions of ElasticSearch. To verify that everything's OK, you need two bits of information:

  1. ElasticSearch version. You can get it from ElasticSearch status response using your browser,
  2. ActiveCollab version. It is available at the top of System Settings page.

Once you have these two numbers, you can check compatibility table on System Requirements page to see if they match.

Error when Saving Settings #

There is a possibility that system will error when you try to save ElasticSearch settings even though Test Connection reported that everything is OK.

Reason for this is that Test Connection just tests if it can connect to the ElasticSearch server, and that there is a supported version of ElasticSearch responding. Save Settings goes beyond that and tries to create an index where search data will be stored.

This operation can fail for various reasons. To learn why index creation failed, you'll need debug information, and you can get that by switching to Debug mode. When save settings fails, you will get more info in browser console, as well as in /logs directory.

Don't forget to turn off debug mode when you are done.

Cron Jobs Fail Because Index is Read-Only #

There are cases when index is successfully created, and search data is rebuilt, but you get errors in cron job output looking something like this:

Exception Elasticsearch\Common\Exceptions\Forbidden403Exception: 
  "error": {
    "root_cause": [
        "type": "cluster_block_exception",
        "reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
    "type": "cluster_block_exception",
    "reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
  "status": 403

This means that index is read only, and that it does not accept operations that modify the data (indexing of new documents, or deletion of documents when items are deleted in ActiveCollab). To resolve this, you will need to take off read-only flag from the index.

First, we'll need the index name. You can get it from index status command that ActiveCollab command line tool provides. Navigate to directory where ActiveCollab is installed on your server and run:

php tasks/activecollab-cli.php search:index

That will print info about the index, including the name.

Now that you have the index name, modify this command to include address of your ElasticSearch host, replace the index name with the correct one, and run it:

curl -H 'Content-Type: application/json' -X PUT -d '{"index": {"blocks": {"read_only_allow_delete": "false"}}}' http://localhost:9200/INDEX-NAME/_settings

ElasticSearch should acknowledge the change.