This sample application demonstrates:
- Searching for recipes by keywords, and
- Creating new recipes and saving them in Elasticsearch
This sample application deliberately uses plain PHP code (that is, no PHP frameworks), a little bit of Bootstrap CSS and even less jQuery. These minimalist choices are deliberate. We want to keep non-Elasticsearch-related code to a minimum so it as easy as possible to focus on the Elasticsearch-related code in this application.
-
Download and install PHP 7.0.
-
Download and unzip Elasticsearch.
-
Follow the Installation & Setup Guide to install and test the Elastic Stack (you can skip this step if you have a working installation of the Elastic Stack). Additionaly for this demo there is no requirement to install either Kibana or Logstash.
-
Run Elasticsearch
<path_to_elasticsearch_root_dir>/bin/elasticsearch
-
Check that Elasticsearch is up and running.
- Open
localhost:9200in web browser -- should return status code 200
Note: By default, Elasticsearch runs on port 9200. If you changed the default ports during installation, change the above calls to use appropriate ports.
- Open
-
Download the code in this repo and unzip it.
$ wget -O elastic-demo.zip 'https://github.com/elastic/demo/archive/master.zip' $ unzip elastic-demo.zip $ mv demo-master/recipe_search . $ rm -rf demo-master elastic-demo.zip $ cd recipe_search
-
Install application dependencies.
$ composer install
-
Seed Elasticsearch index with initial recipe data.
$ php data/seed.php
-
Start the application using PHP's built-in web server.
$ cd public $ php -S localhost:8000By default this application will communicate with the Elasticsearch API at
http://localhost:9200. If, in step 3, you noted a different port than 9200 being used, you will need to pass this information to the application when starting it up via an environment variable:$ APP_ES_PORT=<PORT> php -S localhost:8000
-
Open your web browser and visit
http://localhost:8000.
The code in this project is organized as follows, starting at the root directory level (only relevant files and folders listed):
data/— contains seed data and loader scriptseed.txt— contains seed data in bulk index formatseed.php— script to load seed data
public/— contains files served by web servercss/— contains the Bootstrap CSS filejs/— contains the jQuery and this project's Javascript filesadd.php— script to add a new recipe to Elasticsearchindex.php— script to search for recipes in Elasticsearchview.php— script to view a recipe from Elasticsearch
composer.json— file describing application dependencies, including the Elasticsearch PHP language client
