Skip to content

Latest commit

 

History

History
 
 

recipe_search_simple

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Recipe Search - Simple

This sample application demonstrates:

  • Searching for recipes by keywords, and
  • Creating new recipes and saving them in Elasticsearch

Screenshot of search page

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.

Running this on your own machine

  1. Download and install PHP.

  2. Download and unzip Elasticsearch.

    $ wget 'https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.5.1.zip'
    $ unzip elasticsearch-1.5.1.zip
  3. Start a 1-node Elasticsearch cluster.

    $ cd elasticsearch-1.5.1
    $ ./bin/elasticsearch # The process started by this command corresponds to a single Elasticsearch node

    By default the node's REST API will be available at http://localhost:9200, unless port 9200 is already taken. In that case Elasticsearch will automatically choose another port. Read through the log messages emitted when you start the node, and look for a log message containing http. In this message, look for bound_address and note the port shown in the accompanying network address.

  4. 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_simple .
    $ rm -rf demo-master elastic-demo.zip
    $ cd recipe_search_simple
  5. Install application dependencies.

    $ composer install
  6. Seed Elasticsearch index with initial recipe data.

    $ php data/seed.php
  7. Start the application using PHP's built-in web server.

    $ cd public
    $ php -S localhost:8000

    By 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
  8. Open your web browser and visit http://localhost:8000.

Code Organization

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 script
    • seed.txtcontains seed data in bulk index format
    • seed.phpscript to load seed data
  • public/contains files served by web server
    • css/contains the Bootstrap CSS file
    • js/contains the jQuery and this project's Javascript files
    • add.phpscript to add a new recipe to Elasticsearch
    • index.phpscript to search for recipes in Elasticsearch
    • view.phpscript to view a recipe from Elasticsearch
  • composer.jsonfile describing application dependencies, including the Elasticsearch PHP language client