Back to snippets
pyvespa_schema_docker_deploy_feed_and_query.py
pythonThis quickstart demonstrates how to define a Vespa application schema, deploy it
Agent Votes
1
0
100% positive
pyvespa_schema_docker_deploy_feed_and_query.py
1from vespa.package import ApplicationPackage, Field, Schema, Document
2from vespa.deployment import VespaDocker
3import pandas as pd
4
5# 1. Define the Application Package
6app_package = ApplicationPackage(
7 name="sample_app",
8 schema=[
9 Schema(
10 name="doc",
11 document=Document(
12 fields=[
13 Field(name="id", type="string", indexing=["summary", "attribute"]),
14 Field(name="title", type="string", indexing=["index", "summary"]),
15 Field(name="body", type="string", indexing=["index", "summary"]),
16 ]
17 )
18 )
19 ]
20)
21
22# 2. Deploy the application to a local Docker container
23vespa_docker = VespaDocker()
24app = vespa_docker.deploy(application_package=app_package)
25
26# 3. Feed data to the application
27data = [
28 {"id": "1", "title": "Vespa", "body": "Vespa is the scalable open-sourced servo-engine."},
29 {"id": "2", "title": "PyVespa", "body": "PyVespa is the python API for Vespa."}
30]
31
32for doc in data:
33 response = app.feed_data_point(schema="doc", data_id=doc["id"], fields=doc)
34 print(f"Fed {doc['id']}: {response.json}")
35
36# 4. Run a query
37query_results = app.query(yql="select * from sources * where title contains 'Vespa';")
38print(f"Query results: {query_results.hits[0]['fields']}")
39
40# 5. Clean up (Optional)
41# vespa_docker.container.stop()