silverstripe/silverstripe-forager-elastic-enterprise

Elastic Enterprise Search Provider for Silverstripe Forager

1.0.0 2024-07-30 18:59 UTC

This package is auto-updated.

Last update: 2024-08-31 02:45:57 UTC


README

This module provides the ability to index content for an App Search engine using Elastic's Enterprise Search PHP library.

Elastic Enterprise Search provider for Silverstripe Forager.

This module does not provide any method for performing searches on your engines - we've added some suggestions though.

Note: App Search is one of the products included in Elastic Enterprise Search, the two names are currently used interchangably in this module. This module does not currently provide support for Workplace Search (which is the other product that is included in Enterprise Search).

Installation

composer require silverstripe/silverstripe-forager-elastic-enterprise

Activating EnterpriseSearch

To start using Elastic Enterprise Search, define environment variables containing your private API key, endpoint, and prefix.

ENTERPRISE_SEARCH_ENDPOINT="https://abc123.app-search.ap-southeast-2.aws.found.io"
ENTERPRISE_SEARCH_ENGINE_PREFIX="engine-name-excluding-variant"
ENTERPRISE_SEARCH_API_KEY="private-abc123"

Configuring Enterprise Search

The most notable configuration surface for Enterprise Search is the schema, which determines how data is stored in your Enterprise Search index (engine). There are four types of data in Enterprise Search:

  • text (default)
  • date
  • number
  • geolocation

You can specify these data types in the options node of your fields.

SilverStripe\Forager\Service\IndexConfiguration:
  indexes:
    myindex:
      includeClasses:
        SilverStripe\CMS\Model\SiteTree:
          fields:
            title: true
            summary_field:
              property: SummaryField
              options:
                type: text

Note: Be careful about whimsically changing your schema. EnterpriseSearch may need to be fully reindexed if you change the name of a field. Fields cannot be deleted so re-naming one will leave any previously created fields around. At the time of writing there is a limit of 64 fields per engine.

Additional documentation

Majority of documentation is provided by the Silverstripe Forager module. A couple in particular that might be useful to you are:

Searching

PHP

To search via PHP you can use the silverstripe-discoverer along with the silverstripe-discoverer-elastic-enterprise provider module.

JS

Elastic themselves provide a headless Search UI JS library, which can be used with vanilla JS or any framework like React, Vue, etc.

There are two main libraries:

If you are using React, then there is also @elastic/react-search-ui, which provides interface components.

If you are not using React, then the creation of the view will be up to you.