$30 off During Our Annual Pro Sale. View Details »

Elasticsearch + Symfony @ WDI 2021

Elasticsearch + Symfony @ WDI 2021

Elasticsearch to najpopularniejsza wyszukiwarka pełnotekstowa o potężnych możliwościach. Jako programista PHP z kilkunastoletnim stażem, a obecnie pracownik Elastic (twórców Elasticsearch) chciałbym się z Wami podzielić najlepszym z obu światów.

Sebastian Grodzicki

March 04, 2021
Tweet

More Decks by Sebastian Grodzicki

Other Decks in Programming

Transcript

  1. +

    View Slide

  2. $ whoami
    Sebastian Grodzicki

    • Senior Engineering Manager at


    • ex-CTO at GoldenLine & SHOWROOM


    • SensioLabs Certi
    fi
    ed Symfony Developer


    @sebgrodzicki

    View Slide

  3. Elastic Stack

    View Slide

  4. View Slide

  5. Vanilla PHP

    View Slide

  6. O
    ffi
    cial low-level client for Elasticsearch
    • O
    ffi
    cial PHP client for Elasticsearch: elastic/elasticsearch-php


    • Updated and released with the Elastic Stack version


    • Uses connection pool for cluster con
    fi
    guration


    • Exposes the Elasticsearch APIs using functions of a Client class


    • Each function returns the body of a HTTP response from
    Elasticsearch or a boolean value for HEAD API (e.g., Index exists
    API)

    View Slide

  7. O
    ffi
    cial low-level client for Elasticsearch

    View Slide

  8. .
    .
    Semantic Versioning
    7 11 1
    major minor patch

    View Slide

  9. O
    ffi
    cial low-level client for Elasticsearch

    View Slide

  10. O
    ffi
    cial low-level client for Elasticsearch

    View Slide

  11. O
    ffi
    cial low-level client for Elasticsearch

    View Slide

  12. Elastica
    • Community-driven PHP client for Elasticsearch: ru
    fl
    in/
    Elastica


    • Built on top of o
    ffi
    cial low-level client


    • Object-oriented instead of using associative arrays

    View Slide

  13. Elastica

    View Slide

  14. Elastica

    View Slide

  15. FOSElasticaBundle
    • Integrates the Elastica library into a Symfony environment


    • Use JmsSerializer or Symfony Serializer to convert between
    PHP objects and Elasticsearch data


    • Index con
    fi
    guration for Elasticsearch, or send data without
    con
    fi
    guration to use the dynamic mapping feature of
    Elasticsearch


    • Listeners for Doctrine events for automatic indexing

    View Slide

  16. FOSElasticaBundle
    Elasticsearch


    7.x

    View Slide

  17. FOSElasticaBundle

    View Slide

  18. FOSElasticaBundle

    View Slide

  19. FOSElasticaBundle

    View Slide

  20. View Slide

  21. Demo

    View Slide

  22. View Slide

  23. Controller

    View Slide

  24. Doctrine entity class

    View Slide

  25. Data
    fi
    xtures

    View Slide

  26. Elasticsearch index con
    fi
    guration

    View Slide

  27. Aliased Indexes

    View Slide

  28. Aliased Indexes
    • talk_2021-02-26-182155


    • talk_2021-03-12-104500


    • talk_2021-03-12-112000
    ← talk

    View Slide

  29. Mappings

    View Slide

  30. Populating

    View Slide

  31. Searching via CLI

    View Slide

  32. Searching via controller

    View Slide

  33. Autowiring

    View Slide

  34. Searching for "Sebastian"

    View Slide

  35. Searching for "Symfony"

    View Slide

  36. Searching for "Kuba"

    View Slide

  37. Searching for "Jakub"

    View Slide

  38. Synonyms

    View Slide

  39. Searching for "Jakub"

    View Slide

  40. Kuba != Kuba

    View Slide

  41. Tajemnica turkusowego łabędzia

    View Slide

  42. Tajemnica turkusowego łabędzia

    View Slide

  43. Tajemnica turkusowego łabędzia

    View Slide

  44. Tajemnica turkusowego łabędzia

    View Slide

  45. Tajemnica turkusowego łabędzia

    View Slide

  46. Tajemnica turkusowego łabędzia

    View Slide

  47. Tajemnica turkusowego łabędzia

    View Slide

  48. Morfologik Polish Lemmatizer plugin for Elasticsearch

    View Slide

  49. Morfologik Polish Lemmatizer plugin for Elasticsearch

    View Slide

  50. Morfologik Polish Lemmatizer plugin for Elasticsearch

    View Slide

  51. Hosting

    View Slide

  52. Docker

    View Slide

  53. SymfonyCloud
    Latest is 7.11

    View Slide

  54. Elastic Cloud

    View Slide

  55. Want more?

    View Slide

  56. Elastic Logs

    View Slide

  57. Elastic Metrics

    View Slide

  58. Elastic APM

    View Slide

  59. Q&A

    View Slide

  60. Thank you!

    View Slide