silverstripe/silverstripe-search-service-elastic

Provide Elastic Enterprise Search Functionality to Silverstripe Search Service

Installs: 2 491

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 7

Forks: 3

Open Issues: 1

Type:silverstripe-vendormodule

1.0.0 2024-05-13 01:52 UTC

This package is auto-updated.

Last update: 2024-05-13 01:56:53 UTC


README

Elastic Service provider for Silverstripe Search Service.

This module uses Elastic's Enterprise Search PHP library to provide the ability to index content for an Elastic App Search engine. This module does not provide any method for performing searches on your engines - we've added some suggestions though.

Requirements

  • php: ^8.1
  • silverstripe/framework: ^5
  • silverstripe/silverstripe-search-service: ^3
  • elastic/enterprise-search: ^8.3
  • guzzlehttp/guzzle: ^7

Installation

composer require silverstripe/silverstripe-search-service-elastic

Activating EnterpriseSearch

To start using EnterpriseSearch, 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_API_KEY="private-abc123"
ENTERPRISE_SEARCH_ENGINE_PREFIX="value-excluding-index-name"

Configuring EnterpriseSearch

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

  • text (default)
  • date
  • number
  • geolocation

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

SilverStripe\SearchService\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 data type of a field.

Additional documentation

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

Searching

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.