StripeCon EU 2021 - Can you make it more like google?

A
Andrew PaxleySilverstripe Limited
Could You Make It More Like
Integrating Silverstripe with Elastic App Search
?
Andrew Paxley (né Aitken-Fincham)
● Joined as a Junior Support
Developer in 2015
● Co-helmed the short-lived
Silverstripe UK office
● Now Principal Developer in the
Application Support Team
● @andrewandante
Agenda
● What’s the problem?
● Elastic + Silverstripe Ltd
● Elastic + Silverstripe
Framework
● What’s next?
Problem: Our search is no good!
Lol where’s my
document?
Where the
#*!&^ are my
documents?
SOLUTION: ELASTIC APP SEARCH!!
Steps
- Index site content
- Search that content
- ???
- PROFIT!!!
- Also autocomplete
- Styling
- Subsites
- And some other bits and pieces
Step 0: Setup Infrastructure
(Gentlemen, start your engines)
Silverstripe Ltd: Elastic Partner
StripeCon EU 2021 - Can you make it more like google?
Step 1: Add fuel to the Engine
Module: Silverstripe Search Service
- Define indexes
Module: Silverstripe Search Service
- Define indexes
- Configure
Module: Silverstripe Search Service
- Define indexes
- Configure
- Full reindex
Tweaks
Tweaks
- Add extension to DMS
Document
Tweaks
- Add extension to DMS
Document
- Reindex Pages when
Elements are published
Tweaks
- Add extension to DMS
Document
- Reindex Pages when
Elements are published
- Use env var for index
variant
Tweaks
- Add extension to DMS
Document
- Reindex Pages when
Elements are published
- Use env var for index
variant
- Turn off html crawler
Tweaks
- Add extension to DMS
Document
- Reindex Pages when
Elements are published
- Use env var for index
variant
- Turn off html crawler
- Add content type via
extension
Step 2: Go find the things
Module: SilverStripe Elastic AppSearch
- Run query through
a sanitiser
- Add result fields
Module: SilverStripe Elastic AppSearch
- Run query through
a sanitiser
- Add result fields
Module: SilverStripe Elastic AppSearch
- Run query through
a sanitiser
- Add facets
- Add result fields
Module: SilverStripe Elastic AppSearch
- Run query through
a sanitiser
- Add facets
- Add filters
- Add result fields
Module: SilverStripe Elastic AppSearch
- Run query through
a sanitiser
- Add facets
- Add filters
- Multisearch
Module: SilverStripe Elastic AppSearch
- Fancy filter for
Document Library
Module: SilverStripe Elastic AppSearch
- Fancy sort for
Document Library
- Fancy filter for
Document Library
Module: SilverStripe Elastic AppSearch
- Templating!
- Fancy sort for
Document Library
- Fancy filter for
Document Library
Step 3: Autocomplete through the Proxy
Module: SilverStripe Elastic Proxy (sort of)
- React-based search
header
Module: SilverStripe Elastic Proxy (sort of)
- React-based search
header
- Return suggested
queries
Module: SilverStripe Elastic Proxy (sort of)
- React-based search
header
- Return suggested
queries
- .htaccess redirect
Module: SilverStripe Elastic Proxy (sort of)
- Pull credentials
from ENV
Module: SilverStripe Elastic Proxy (sort of)
- Pull credentials
from ENV
- Sanity check
endpoints
Module: SilverStripe Elastic Proxy (sort of)
- Pull credentials
from ENV
- Sanity check
endpoints
- Hard-code final
endpoint
Step 4: Ahh crap, Subsites
Problem?
- Filter by subsite
ID?
- query_suggestion
endpoint doesn’t
accept filters
Step 4.1: Make more copies!
Re-jig the config, re-work the module
- Add subsite ID to
index definitions
- Copy class
definitions with
yaml syntax magic
- Add hooks into the
core module
Step 5: Profit!!!
….. Did it work though?
- Fixed bugs for small search
terms and special
characters
- Switched to AND searches
over OR searches
- Filtering fixes
- Ability for customer to
adjust field weights and
reorder results
- Improved visibility about
index status
CMS Area for Visibility
Step 6: Aftermath
Now what?
- Currently in UAT
- Built-in Solr/Elastic
toggle
- Adjustments to be
made on the fly by the
client
- Training and
documentation
Potential new features
- Spellcheck*
- Hook into analytics
tracking*
- Better admin in the
CMS
- Dependency-tracking
- Fluent?
Potential new features
- Spellcheck*
- Hook into analytics
tracking*
- Better admin in the
CMS
- Dependency-tracking
- Fluent?
Shout Outs!
Matt Peel (madmatt), Aaron Carlino (unclecheese), Stephen Makrogianni (StephenMakrogianni),
Chris Penny (chrispenny), Ingo Schommer (chillu)
Thanks!
1 of 49

More Related Content

What's hot(20)

ElasticSearch on AWSElasticSearch on AWS
ElasticSearch on AWS
Philipp Garbe334 views
Application Monitoring using DatadogApplication Monitoring using Datadog
Application Monitoring using Datadog
Mukta Aphale3.8K views
Apache Spark e AWS GlueApache Spark e AWS Glue
Apache Spark e AWS Glue
Laercio Serra496 views
Saga pattern and event sourcing with kafkaSaga pattern and event sourcing with kafka
Saga pattern and event sourcing with kafka
Roan Brasil Monteiro617 views
Riak CS Build Your Own Cloud StorageRiak CS Build Your Own Cloud Storage
Riak CS Build Your Own Cloud Storage
buildacloud4.4K views

Similar to StripeCon EU 2021 - Can you make it more like google?(20)

Recently uploaded(20)

StripeCon EU 2021 - Can you make it more like google?