How to : elastic search + fosElastica + symfony2 + typehead + bloodhound + elastic suggesters
(POST in BETA version, but I prefer release it, and enhance it later, than never publish ^^)
I want to use Elastic, to manage my search functionality.
It’s a symfony2 project, so I start my research by the integration of Elastic in symfony2, and FosElastica came up.
Thanks to FOS #friendOfSymfony2 people again, and again, your work is amazing !
Also nothing happends here without Elastica
This bundle provides integration with ElasticSearch and Elastica with Symfony2. Features include:
Integrates the Elastica library into a Symfony2 environment
Automatically generate mappings using a serializer
Listeners for Doctrine events for automatic indexing
I assume here, you have already a running symfony2 project, with data on it, I use this setup, to search over user, by name, mail, and over another data named « tags », a kind of internal references to group items.
Steps :
- install Elastic
- configure Elastic
- install FosElastica
- configure FosElastica
- try with Elastic web interface to confirm 4 firsts sets
- add typeahead.js to your page
- configure and implement bloodhound and typeahead
- …
- Enjoy !
1 – Install of elasticsearch :
[pastacode lang= »bash » message= » » highlight= » » provider= »manual »]
apt-get install elasticsearch
[/pastacode]
(If you are under ubuntu use sudo if you not root, tested on ubuntu 15.10 and Debian 8.)
To have elastic working, I’ve to :
[pastacode lang= »bash » message= » » highlight= » » provider= »manual »]
chmod -R elasticsearch:elasticsearch /var/lib/elasticsearch
[/pastacode]
Both debian and ubuntu.
After that, you need to go to :
[pastacode lang= »bash » message= » » highlight= » » provider= »manual »]
cd /etc/elasticsearch/
[/pastacode]
and open « elasticsearch.yml » to configure it.
2 – Configuration
(TODO : CORS config + security)
https://www.elastic.co/blog/found-elasticsearch-security
https://xenforo.com/community/threads/how-to-basic-elasticsearch-installation-debian-ubuntu.26163/
3 – Install FosElastica
with composer :
[pastacode lang= »bash » message= » » highlight= » » provider= »manual »]
php composer.phar require friendsofsymfony/elastica-bundle "~3.0"
[/pastacode]
And enable it :
[pastacode lang= »php » message= » » highlight= » » provider= »manual »]
[/pastacode]
4 - FosElastica configuration :
http://elasticsearch-users.115913.n3.nabble.com/Http-Cors-Setting-td4066032.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html#_settings_3
http://twitter.github.io/typeahead.js/examples/
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html
https://github.com/FriendsOfSymfony/FOSElasticaBundle/issues/380
https://github.com/FriendsOfSymfony/FOSElasticaBundle/issues/445
https://github.com/FriendsOfSymfony/FOSElasticaBundle/issues/469
https://github.com/FriendsOfSymfony/FOSElasticaBundle/issues/673
https://github.com/FriendsOfSymfony/FOSElasticaBundle
http://stackoverflow.com/questions/21530063/how-do-we-set-remote-in-typeahead-js-0-10/21533204#21533204
Faster Autocomplete with typeahead.js, Elasticsearch & nginx
http://mycodde.blogspot.se/2014/12/typeaheadjs-autocomplete-suggestion.html
https://www.elastic.co/guide/en/elasticsearch/reference/master/search-suggesters.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html