Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elasticsearch for SQL users - OpenLate meetup J...

Elasticsearch for SQL users - OpenLate meetup July 2015

Avatar for Elastic Co

Elastic Co

July 14, 2015
Tweet

More Decks by Elastic Co

Other Decks in Programming

Transcript

  1. BUT… WHAT IS IT? Elasticsearch is a distributed, open source

    search and analytics engine, designed for horizontal scalability, reliability, and easy management
  2. CONCEPTS Document The unit of data fed into Elasticsearch, in

    JSON format Index A collection of documents stored in Elasticsearch Type The category of the document within an index { " f r o m " : " t o n y @ s t a r k . c o m " , " t o " : " h u l k @ a v e n g e r s . o r g " , " s u b j e c t " : " S c e p t e r g e m - > U l t r o n - W D Y T ? ? " , " b o d y " : " H e y g r e e n g u y , s o I h a v e t h i s i d e a . . . " }
  3. CONCEPTS — COMPARISON RDBMS Elasticsearch Example Database Index e m

    a i l s Table Type m e s s a g e s Row Document (an email message) Column aka Field Field s e n d e r
  4. CREATE AN EMAIL SQL I N S E R T

    I N T O e m a i l s . m e s s a g e s ( s e n d e r , r e c i p i e n t , s u b j e c t , b o d y ) V A L U E S ( " t o n y @ s t a r k . c o m " , " h u l k @ a v e n g e r s . o r g " , " S c e p t e r g e m - > U l t r o n - W D Y T ? ? " , " H e y g r e e n g u y , s o I h a v e t h i s i d e a . . . " ) ; ELASTICSEARCH c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s - d ' { " s e n d e r " : " t o n y @ s t a r k . c o m " , " r e c i p i e n t " : " h u l k @ a v e n g e r s . o r g " , " s u b j e c t " : " S c e p t e r g e m - > U l t r o n - W D Y T ? ? " , " b o d y " : " H e y g r e e n g u y , s o I h a v e t h i s i d e a . . . " } '
  5. RETRIEVE AN EMAIL SQL S E L E C T

    * F R O M e m a i l s . m e s s a g e s W H E R E i d = : i d ELASTICSEARCH c u r l - X G E T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / : i d
  6. UPDATE AN EMAIL SQL U P D A T E

    e m a i l s . m e s s a g e s S E T s u b j e c t = " T o p S e c r e t - C a l l m e ! ! ! " W H E R E i d = : i d ELASTICSEARCH — OPTION 1 c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / : i d / _ u p d a t e { " d o c " : { " s u b j e c t " : " T o p S e c r e t - C a l l m e ! ! ! " } } ELASTICSEARCH — OPTION 2 c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / : i d / _ u p d a t e { " s c r i p t " : " c t x . _ s o u r c e . s u b j e c t = ' T o p S e c r e t - C a l l m e ! ! ! ' " }
  7. DELETE AN EMAIL SQL D E L E T E

    F R O M e m a i l s . m e s s a g e s W H E R E i d = : i d ELASTICSEARCH c u r l - X D E L E T E h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / : i d
  8. SEARCH FOR A SINGLE TERM IN A SINGLE FIELD SQL

    S E L E C T * F R O M e m a i l s W H E R E b o d y L I K E " % h a v e % " ; ELASTICSEARCH c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / _ s e a r c h { " q u e r y " : { " m a t c h " : { " b o d y " : " h a v e " } } }
  9. SEARCH FOR A MULTIPLE TERMS IN A SINGLE FIELD SQL

    S E L E C T * F R O M e m a i l s W H E R E b o d y L I K E " % g r e e n % " O R b o d y L I K E " % i d e a % " ; ELASTICSEARCH c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / _ s e a r c h { " q u e r y " : { " m a t c h " : { " b o d y " : " g r e e n i d e a " } } }
  10. SEARCH FOR A PHRASE IN A SINGLE FIELD SQL S

    E L E C T * F R O M e m a i l s W H E R E b o d y L I K E " % h a v e t h i s i d e a % " ; ELASTICSEARCH c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / _ s e a r c h { " q u e r y " : { " m a t c h _ p h r a s e " : { " b o d y " : " h a v e t h i s i d e a " } } }
  11. SEARCH SLOPPILY FOR A PHRASE IN A SINGLE FIELD SQL

    S E L E C T * F R O M e m a i l s W H E R E b o d y L I K E " % h a v e % i d e a % " ; ELASTICSEARCH c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / _ s e a r c h { " q u e r y " : { " m a t c h _ p h r a s e " : { " b o d y " : { " q u e r y " : " h a v e i d e a " , " s l o p " : 1 } } } }
  12. SEARCH FOR TERMS ACROSS MULTIPLE FIELDS SQL S E L

    E C T * F R O M e m a i l s W H E R E s u b j e c t L I K E " % u l t r o n % " O R s u b j e c t L I K E " % i d e a % " O R b o d y L I K E " % u l t r o n % " O R b o d y L I K E " % i d e a % " ; ELASTICSEARCH c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / _ s e a r c h { " q u e r y " : { " m u l t i _ m a t c h " : { " f i e l d s " : [ " s u b j e c t " , " b o d y " ] , " q u e r y " : " u l t r o n i d e a " } } }
  13. SEARCH FOR TERMS ACROSS ALL FIELDS SQL S E L

    E C T * F R O M e m a i l s W H E R E s e n d e r L I K E " % h u l k % " O R s e n d e r L I K E " % u l t r o n % " O R r e c i p i e n t L I K E " % h u l k % " O R r e c i p i e n t L I K E " % u l t r o n % " O R s u b j e c t L I K E " % h u l k % " O R s u b j e c t L I K E " % u l t r o n % " O R b o d y L I K E " % h u l k % " O R b o d y L I K E " % u l t r o n % " ; ELASTICSEARCH c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / e m a i l s / m e s s a g e s / _ s e a r c h { " q u e r y " : { " m a t c h " : { " _ a l l " : " h u l k u l t r o n " } } }
  14. SEARCH FOR AN EXACT MATCH (FIELD = VALUE) SQL S

    E L E C T * F R O M c e n s u s . p e o p l e W H E R E c i t y = " S a n F r a n c i s c o " ; ELASTICSEARCH — TERM QUERY c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / c e n s u s / p e o p l e / _ s e a r c h { " q u e r y " : { " t e r m " : { " c i t y " : " S a n F r a n c i s c o " } } } ELASTICSEARCH — TERM FILTER c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / c e n s u s / p e o p l e / _ s e a r c h { " q u e r y " : { " f i l t e r e d " : { " f i l t e r " : { " t e r m " : { " c i t y " : " S a n F r a n c i s c o " } } } } }
  15. AGGREGATIONS SQL S E L E C T c i

    t y , g e n d e r , A V G ( a g e ) F R O M c e n s u s . p e o p l e G R O U P B Y c i t y , g e n d e r ; ELASTICSEARCH c u r l - X P O S T h t t p : / / l o c a l h o s t : 9 2 0 0 / c e n s u s / p e o p l e / _ s e a r c h { " a g g r e g a t i o n s " : { " b y _ c i t y " : { " t e r m s " : { " f i e l d " : " c i t y " } , " a g g r e g a t i o n s " : { " b y _ g e n d e r " : { " t e r m s " : { " f i e l d " : " g e n d e r " } , " a g g r e g a t i o n s " : { " a v e r a g e _ a g e " : { " a v g " : { " f i e l d " : " a g e " } } } } }