elasticsearch for westcoast

30
Charlie Hull, Managing Director, Flax Nick Gushlow, Systems Architect, Westcoast Elasticsearch London Meetup [email protected] www.flax.co.uk/blog +44 (0) 8700 118334 Twitter: @FlaxSearch Search is never Simple Elasticsearch for Westcoast

Upload: charlie-hull

Post on 23-Jan-2018

1.904 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Elasticsearch for Westcoast

Charlie Hull, Managing Director, FlaxNick Gushlow, Systems Architect, WestcoastElasticsearch London Meetup

[email protected]/blog+44 (0) 8700 118334Twitter: @FlaxSearch

Search is never SimpleElasticsearch for Westcoast

Page 2: Elasticsearch for Westcoast

Building open source search applications since 2001

Independent, honest advice and analysis

Expert design & development, Apache Solr committers

Test-driven relevancy and performance tuning

Custom training & mentoring for your staff

Flexible support up to 24/7/365 with SLAs

Come to our Meetups!

Page 3: Elasticsearch for Westcoast
Page 4: Elasticsearch for Westcoast

Charlie Hull, Managing Director & co-founder of Flax

Nick Gushlow, Systems Architect at Westcoast

Who are we?@FlaxSearch

Page 5: Elasticsearch for Westcoast

Why Westcoast needed a new search engine

The source data & the plan

The trouble with....

Building an admin panel for search The search goes live

Lessons learned

What we'll cover today@FlaxSearch

Page 6: Elasticsearch for Westcoast

Largest privately owned IT distributor in UK & Ireland

£1.5 billion turnover

Apple, HP, Lenovo, Microsoft, Samsung, Toshiba

Includes XMA / QC Supplies and Viglen

Who are Westcoast?@FlaxSearch

Page 7: Elasticsearch for Westcoast

Old SQL based search not accurate enough

8000 searches per day, 90% SKU based

You searched iPad …. did you actually want an iPad?

Customers used Google / competitors to find part numbers,

Static traffic numbers – 3500 user per day 7am to 7pm

Increase web revenue further, currently £40m

Why a new search engine?@FlaxSearch

Page 8: Elasticsearch for Westcoast

Business approved a project to implement a change to ‘improve search’

Google Search Appliance

SLI

Apptus

Fredhopper

Elasticsearch

Time for a change@FlaxSearch

Page 9: Elasticsearch for Westcoast

Live pricing

XML data sheets

Business user management interface

Synonyms / Exclusions

Boosts

Search vs Search vs Search

Requirements@FlaxSearch

Page 10: Elasticsearch for Westcoast

0.5m products

Nested data (attributes)

Supplied as XML, one file per product

The source data@FlaxSearch

Page 11: Elasticsearch for Westcoast

0.5m products

Nested data (attributes)

Supplied as XML, one file per product

BUT!– Live Pricing API will restrict results at search time

– Different for every end customer

– Based on hard to explain business rules

The source data@FlaxSearch

Page 12: Elasticsearch for Westcoast

Elasticsearch

Java client

Custom Java indexer (Dropwizard)

Search application (Dropwizard)

Admin panels (AngularJS)

Agile process

The plan@FlaxSearch

Page 13: Elasticsearch for Westcoast

First, do your search

Send 5000 results to legacy pricing API

Merge the pricing information with search results

Now build your facets (including on price)

Hang on, doesn't Elasticsearch do facets for you?

The trouble with facets@FlaxSearch

Page 14: Elasticsearch for Westcoast

Front end systems built by third party– Solution: Search app with JSON API (defined by them)– Encrypted JSON for use during sessions

More trouble with facets @FlaxSearch

Page 15: Elasticsearch for Westcoast

Front end systems built by third party– Solution: Search app with JSON API (defined by them)– Encrypted JSON for use during sessions

Data for all the facets must be supplied to the UI– Full result counts for applied facets need to be returned, in

the order they were applied– Solution: lots of searches

More trouble with facets @FlaxSearch

Page 16: Elasticsearch for Westcoast

Front end systems built by third party– Solution: Search app with JSON API (defined by them)– Encrypted JSON for use during sessions

Data for all the facets must be supplied to the UI– Full result counts for applied facets need to be returned, in

the order they were applied– Solution: lots of searches

Custom facets for some customers– Solution: an index of facet definitions

More trouble with facets @FlaxSearch

Page 17: Elasticsearch for Westcoast

Boost for individual items– Easy! Define in the source data

Term boosts– e.g. some Macbooks over other Macbooks– Harder – but still defined in source data

The trouble with boosting@FlaxSearch

Page 18: Elasticsearch for Westcoast

A great way to run search projects!

...unless not everyone can do Agile

The trouble with Agile@FlaxSearch

Page 19: Elasticsearch for Westcoast

Allows Westcoast to adjust– Synonyms / Exclusions– Remove items from index– Test searches– Test synonyms then push to live• Synonyms are index side as default query is AND

Built in AngularJS

Building an Admin panel@FlaxSearch

Page 20: Elasticsearch for Westcoast

@FlaxSearch

Page 21: Elasticsearch for Westcoast

@FlaxSearch

Page 22: Elasticsearch for Westcoast

@FlaxSearch

Page 23: Elasticsearch for Westcoast

A single node for Elasticsearch

A single node for index & search applications

Ultimately mirrored for failover

Query load very low (1 QPS)– But this may change!

Business hours support by Flax

The search goes live@FlaxSearch

Page 24: Elasticsearch for Westcoast

@FlaxSearch

Page 25: Elasticsearch for Westcoast

@FlaxSearch

Page 26: Elasticsearch for Westcoast

Elasticsearch results were good

Business maintenance, large, boring, never ending work

Changing customer behaviour is slow

Search results over 30% faster on average

Time savings for sales staff

Post Live@FlaxSearch

Page 27: Elasticsearch for Westcoast

Integrating with legacy systems is hard

Business rules can be hard to understand & harder to explain

Not everything can be done with search

If you want to do Agile, make sure everyone else can

Lessons learned@FlaxSearch

Page 28: Elasticsearch for Westcoast

Thankyou!

Any questions?

[email protected]/blog+44 (0) 8700 118334Twitter: @FlaxSearch

@FlaxSearch

Page 29: Elasticsearch for Westcoast

Plug

3rd & 4th February 2016, Cambridge UK

Open source search for Bioinformatics

Free event near Cambridge on Wellcome Genome Campus covering both Solr & Elasticsearch, talks & hands-on workshops

http://www.ebi.ac.uk/pdbe/about/events

@FlaxSearch

Page 30: Elasticsearch for Westcoast

Plug #2

20th March 2016, Padua, Italy

First International Workshop on Recent Trends in News Information Retrieval

One-day workshop as part of the European Conference on Information Retrieval (ECIR 2016) – submission deadline end of January

http://research.signalmedia.co/newsir16/index.html

(including a free test dataset of 1m news articles!)

@FlaxSearch