full text search met elasticsearch in de praktijk

39
foto: Anders Sandberg Wednesday 6 November 13

Upload: jeroen-van-wilgenburg

Post on 25-May-2015

882 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Full text search met ElasticSearch in de praktijk

foto: Anders Sandberg

Wednesday 6 November 13

Page 2: Full text search met ElasticSearch in de praktijk

Full text search met elasticsearch in de praktijk

Jeroen van Wilgenburg, JPoint @jvwilge

vanwilgenburg.wordpress.com

Wednesday 6 November 13

Page 3: Full text search met ElasticSearch in de praktijk

Vragen voor jullie

Wednesday 6 November 13

Page 4: Full text search met ElasticSearch in de praktijk

Vragen voor jullie

• Wie heeft Lucene wel eens gebruikt?

Wednesday 6 November 13

Page 5: Full text search met ElasticSearch in de praktijk

Vragen voor jullie

• Wie heeft Lucene wel eens gebruikt?

• SOLR?

Wednesday 6 November 13

Page 6: Full text search met ElasticSearch in de praktijk

Vragen voor jullie

• Wie heeft Lucene wel eens gebruikt?

• SOLR?

• Compass?

Wednesday 6 November 13

Page 7: Full text search met ElasticSearch in de praktijk

Vragen voor jullie

• Wie heeft Lucene wel eens gebruikt?

• SOLR?

• Compass?

• elasticsearch?

Wednesday 6 November 13

Page 8: Full text search met ElasticSearch in de praktijk

Vragen voor jullie

• Wie heeft Lucene wel eens gebruikt?

• SOLR?

• Compass?

• elasticsearch?

• waar komen de servernamen vandaan?

Wednesday 6 November 13

Page 9: Full text search met ElasticSearch in de praktijk

Wat is elasticsearch?

• full text search engine obv Lucene

• REST-api

• Distributed / High availability

• Document oriënted (nested maps)

Wednesday 6 November 13

Page 10: Full text search met ElasticSearch in de praktijk

Wie gebruiken es?

Wednesday 6 November 13

Page 11: Full text search met ElasticSearch in de praktijk

Ook elastic

foto: Nick Richards

• elastic compute cloud (EC2)

• elastic beanstalk

• elastic load balancer

• elastic map reduce

• elastic transcoder

• Elasticache

Wednesday 6 November 13

Page 12: Full text search met ElasticSearch in de praktijk

BPO-register

• vinden van koopvaardijschepen met historie

• Hibernate Envers, Spring en Twitter Bootstrap

• begonnen met Hibernate Search, vervangen door elasticsearch

• géén clustering gebruikt

Wednesday 6 November 13

Page 13: Full text search met ElasticSearch in de praktijk

Hibernate Search

foto: Flickr - DVIDSHUB

Wednesday 6 November 13

Page 14: Full text search met ElasticSearch in de praktijk

elasticsearch

foto: Flickr - quinn anya

Wednesday 6 November 13

Page 15: Full text search met ElasticSearch in de praktijk

Clusternaam

Wednesday 6 November 13

Page 16: Full text search met ElasticSearch in de praktijk

Pas op met defaults!

• Gericht op ec2

• Goed om elasticsearch te leren

• 10 hits bij zoekresultaten

• voorbeeld (filmpje)

Wednesday 6 November 13

Page 17: Full text search met ElasticSearch in de praktijk

Insecure by design

• zorg dat elasticsearch in gesloten netwerk draait

• wat er niet is kan ook niet stuk

Wednesday 6 November 13

Page 18: Full text search met ElasticSearch in de praktijk

Documentatie

• elasticsearch.org

• docs, blogs, video’s (es + youtube)

• google & stackoverflow

• boek van O’reilly in ontwikkeling

Wednesday 6 November 13

Page 19: Full text search met ElasticSearch in de praktijk

Community/support

• binnen dag reactie op artikel

• www.meetup.com/ElasticSearch-NL

• Gevestigd in Amsterdam

Wednesday 6 November 13

Page 20: Full text search met ElasticSearch in de praktijk

Tools

• command line curl +chrome web inspector

• plugins

• elasticsearch head

• Inquisitor

• Elastic HQ

Wednesday 6 November 13

Page 21: Full text search met ElasticSearch in de praktijk

Query basics• rotterdam

• name:rotterdam

• name:rotterdam +homeport:amsterdam

• +name:rotterdam +homeport:amsterdam

• *gracht

• happy abis dover

• happy abis^2 dover

Wednesday 6 November 13

Page 22: Full text search met ElasticSearch in de praktijk

Mappings

• default: dynamic mapping (schemaless)

• include_in_all

Wednesday 6 November 13

Page 23: Full text search met ElasticSearch in de praktijk

Analyzers

• index analyzer

• search analyzer

• _all is aparte analyzer (ipv per key)

• Inquisitor-plugin (demo)

Wednesday 6 November 13

Page 24: Full text search met ElasticSearch in de praktijk

Diakrieten

• instellen bij beide analyzers

• encoding van Spring

• encoding van EC2

• stackoverflow.com/questions/12016318/

Wednesday 6 November 13

Page 25: Full text search met ElasticSearch in de praktijk

Wildcard

• apart opgeven in query

• suffix-wildcard is ok

• prefix is traaaaag

• boosting werkt niet meer (in onderzoek)

• “rewrite” : “scoring_boolean”

Wednesday 6 November 13

Page 26: Full text search met ElasticSearch in de praktijk

NL AG UK NO

CY LR IT BS

PA BE MT GI

©2013 The World Flag Database & Graham Bartram

Wednesday 6 November 13

Page 27: Full text search met ElasticSearch in de praktijk

©2013 The World Flag Database & Graham Bartram

NL AG UK

CY LR BS

PA MT GIBE

IT

NO

Wednesday 6 November 13

Page 28: Full text search met ElasticSearch in de praktijk

©2013 The World Flag Database & Graham Bartram

BE

IT

NO

Wednesday 6 November 13

Page 29: Full text search met ElasticSearch in de praktijk

Stop words

• a, an, and, are, as, at, be, but, by, for, if, in, into, is, it, no, not, of, on, or, such, that, the, their, then, there, these,they, this, to, was, will, with

Wednesday 6 November 13

Page 30: Full text search met ElasticSearch in de praktijk

Scoring

• ‘magic’ formula

• oa. aantal voorkomens van term in hele set

Wednesday 6 November 13

Page 31: Full text search met ElasticSearch in de praktijk

Sorteren

• “Can’t sort on string types with more than one value per doc, or more than one token per field”

• Voeg veld <veldnaam>.untouched toe

• http://bit.ly/wFd8CZ

Wednesday 6 November 13

Page 32: Full text search met ElasticSearch in de praktijk

Sorteren

• Lastig uitleggen aan eindgebruikers

• Gebruik een balkje met rang

Wednesday 6 November 13

Page 33: Full text search met ElasticSearch in de praktijk

Spring

• github.com/dadoonet

• Tweet David Pilato dat je het gebruikt

• Maak voldoende testqueries

• codevoorbeeld

Wednesday 6 November 13

Page 34: Full text search met ElasticSearch in de praktijk

Unit-test

• refresh na een update

• draai unit-test op andere poort/clusternaam

• codevoorbeeld

Wednesday 6 November 13

Page 35: Full text search met ElasticSearch in de praktijk

Sharding en scoring

• Default is score per shard bereken

• Cluster scores die dicht bij elkaar liggen en ga dan sorteren

• dfs query then fetch (http://bit.ly/1cBRxMv)

Wednesday 6 November 13

Page 36: Full text search met ElasticSearch in de praktijk

Conclusie

• Snel aan de slag

• Even zoeken naar de goede documentatie

• Scoring snappen snel waardevol

Wednesday 6 November 13

Page 37: Full text search met ElasticSearch in de praktijk

Vragen?

Wednesday 6 November 13

Page 38: Full text search met ElasticSearch in de praktijk

Logstash + Kibana

Wednesday 6 November 13

Page 39: Full text search met ElasticSearch in de praktijk

elasticsearch in de praktijkJeroen van Wilgenburg

www.jpoint.nl @jvwilge

vanwilgenburg.wordpress.comphoto by ny156uk on Flickr

Wednesday 6 November 13