• [+] expand all

Quick Start, with Java

This guide shows how to install and run Vespa on a single machine using Docker - it builds and deploys an application, feeds some data and issues queries. This application contains Java components, there's also a version that doesn't use Java. See Getting Started for troubleshooting, next steps and other guides.

Prerequisites:

  • Docker Desktop for Mac/Windows, or Docker on Linux
  • JDK 11+
  • Maven 3.6+
  • Operating system: Linux, macOS or Windows 10 Pro (Docker requirement)
  • Architecture: x86_64
  • Minimum 4 GB memory dedicated to Docker (the default is 2 GB on macOS)

This guide is tested with Docker for Mac, Community Edition-18.06.1-ce-mac73 (26764) and vespaengine/vespa Docker image built 2018-10-01.

Running Vespa in Docker

  1. Validate the environment:

    Make sure you see at minimum 4 GB. Refer to Docker memory for details and troubleshooting:

    $ docker info | grep "Total Memory"
    
  2. Install the Vespa CLI:

    Using Homebrew:

    $ brew install vespa-cli
    

    You can also download Vespa CLI for Windows, Linux and macOS.

  3. Start a Vespa Docker container:

    $ docker run --detach --name vespa --hostname vespa-container \
      --publish 8080:8080 --publish 19071:19071 \
      vespaengine/vespa
    

    The port 8080 is published to make the query and feed endpoints accessible outside the docker container, 19071 is the config server endpoint. Only one docker container named vespa can run at a time, change the name as needed. See the Dockerfile and the startup script for more insights.

  4. Verify it is ready to use:

    $ vespa status deploy --wait 300
    
  5. Initialize myapp/ to a copy of a sample application package:

    $ vespa clone album-recommendation-java myapp
    $ cd myapp
    
  6. Build it:

    $ mvn install
    
  7. Deploy it:

    $ vespa deploy --wait 300
    
  8. Feed documents:

    $ vespa document src/test/resources/A-Head-Full-of-Dreams.json
    $ vespa document src/test/resources/Love-Is-Here-To-Stay.json
    $ vespa document src/test/resources/Hardwired...To-Self-Destruct.json
    

    This uses the /document/v1/ API - use vespa-feed-client to feed large amounts of data, fast.

  9. Issue queries:

    $ vespa query "select * from music where album contains 'head'"
    
    $ vespa query "select * from music where true" \
      "ranking=rank_albums" \
      "ranking.features.query(user_profile)={{cat:pop}:0.8,{cat:rock}:0.2,{cat:jazz}:0.1}"
    
    This uses the Query API. You can also view query results in a browser at localhost:8080/querybuilder/.
  10. Remove the container:

Next steps

Check out getting started for more tutorials and use cases which Vespa is great for. The News tutorials is a great way to explore more Vespa features, and a natural next step.

Explore the Vespa sample applications.