Come installare e integrare ElasticSearch in WordPress? La guida
Installare e integrare ElasticSearch in WordPress permette di migliorare la funzionalità search in WordPress.
ElasticSearch è infatti un motore di ricerca open che permette non solo di migliorare i risultati di una ricerca ma anche le prestazioni e la velocità del sito web.
Doppio vantaggio quindi: motore di ricerca migliore, migliori performance della piattaforma.
Cos’è ElasticSearch?
Elasticsearch è un search engine open source, predisposto ad essere utilizzato in maniera distribuita.
Questo motore di ricerca salva le informazioni come documenti json ed espone interfacce RESTful per l’uso di tutte le sue funzionalità.
Come installare ElasticSearch?
Vediamo adesso come installare ElastiSearch su un server con sistema operativo Debian based:
- Installiamo OpenJDK 8, prerequisito di Elastic search;
apt-get install openjdk-8-jdk
- Importiamo la key GPG relativa al repository;
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add
- Installiamo apt-transport-https;
sudo apt-get install apt-transport-https
- Aggiungiamo il repository ad /etc/apt/sources.list.d/elastic-6.x.list;
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
- Installiamo ElasticSearch;
sudo apt-get update && sudo apt-get install elasticsearch
- Verifichiamo che ElasticSearch sia correttamente in esecuzione;
root@localhost:~# service elasticsearch status -l ● elasticsearch.service - Elasticsearch Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-05-27 17:04:17 UTC; 5s ago Docs: http://www.elastic.co Main PID: 7606 (java) Tasks: 15 (limit: 4915) CGroup: /system.slice/elasticsearch.service └─7606 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1 mag 27 17:04:17 localhost systemd[1]: Started Elasticsearch. root@localhost:~# curl -XGET 'localhost:9200' { "name" : "1QtM2mP", "cluster_name" : "elasticsearch", "cluster_uuid" : "ww7UTb66QDS0FBHwA9023Q", "version" : { "number" : "6.2.4", "build_hash" : "ccec39f", "build_date" : "2018-04-12T20:37:28.497551Z", "build_snapshot" : false, "lucene_version" : "7.2.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Come installare e integrare ElasticSearch in WordPress?
Per integrare ElasticSearch in WordPress occorre innanzitutto installare il plugin Elasticpress.
Una volta attivato il plugin è necessario definire l’URL a cui ElasticSearch è raggiungibile.
Possiamo farlo editando il file wp-config.php con l’aggiunta di:
/** ElasticPress */ define( 'EP_HOST', 'http://127.0.0.1:9200' );
Adesso sincronizziamo MySQL ed ElasticSearch. Possiamo farlo dal pannello di Elasticpress, cliccando sull’icona Sync.
La procedura può impiegare fino a qualche minuto. Potrebbe verificarsi un errore qualora max_execution_time di php abbia un valore troppo basso. In questo caso è sufficiente variare il valore di questo parametro e ripetere il sync.
Dopo il sync, ElasticSearch inizierà a popolarsi e a fornire i risultati delle query.
Da questo momento in poi ogni qualvolta verrà inserito un post su WordPress avverrà una nuova sincronizzazione.
ElasticSearch può essere attivato anche su query custom. In questo caso occorre inserire nell’argomento di WP_Query il parametro ‘ep_integrate’ => true .
Per esempio:
$my_query = new WP_Query( array(‘ep_integrate’ => true,‘post_type’ => $my_custom_post_type, ‘posts_per_page’ => -1) );
E’ possibile trovare maggiori informazioni su Elasticpress sulla pagina GitHub del progetto: https://github.com/10up/ElasticPress .
Approfittiamo per ringraziare il nostro cliente Carmelo Arancio di New Technology Revolution Srl per aver condiviso con noi la sua esperienza nell’integrazione ElasticSearch/Wordpress.
Se avete domande o dubbi su come integrare ElasticSearch in WordPress, non esitate a contattarci!


