Skip to main content

Search Document Schema

The schema for our internal search records, also available via Search API.

Skyler Young avatar
Written by Skyler Young
Updated over 4 months ago

Core Resource Fields

{
"id": "string (keyword, not indexed)",
"service_at_location_id": "string (text, searchable)",
"name": "string (text with keyword subfield for exact matching)",
"description": "string (text, searchable)",
"summary": "string (text, searchable)",
"phone": "string (keyword, exact match)",
"url": "string (keyword, exact match)",
"email": "string (keyword, exact match)",
"schedule": "string (text, searchable)"
}

Geospatial Fields

{
"service_area": {
"type": "geo_shape",
"coordinates": [[["longitude", "latitude"]]]
},
"location": {
"name": "string (text with keyword subfield)",
"alternate_name": "string (text with keyword subfield)",
"description": "string (text, searchable)",
"summary": "string (text, searchable)",
"point": {
"lat": 48.7519,
"lon": -122.4787
},
"physical_address": {
"address_1": "string (text with keyword subfield)",
"address_2": "string (text with keyword subfield)",
"city": "string (keyword, exact match)",
"state": "string (keyword, exact match)",
"country": "string (keyword, exact match)",
"postal_code": "string (keyword, exact match)"
}
}
}

Service Information

{
"service": {
"name": "string (text with keyword subfield)",
"alternate_name": "string (text with keyword subfield)",
"description": "string (text, searchable)",
"summary": "string (text, searchable)"
}
}

Organization Information

{
"organization": {
"name": "string (text with keyword subfield)",
"alternate_name": "string (text with keyword subfield)",
"description": "string (text, searchable)",
"summary": "string (text, searchable)"
}
}

Nested Taxonomies

{
"taxonomies": [
{
"code": "string (text with keyword subfield)",
"name": "string (text with keyword subfield)",
"description": "string (text, searchable)"
}
]
}

System Fields

{
"facets": {
"[dynamic_facet_name]": "any value"
},
"tenant_id": "string (keyword, exact match)",
"priority": 0,
"pinned": false
}

Putting It All Together

{
"id": "string (keyword, not indexed)",
"service_at_location_id": "string (text, searchable)",
"name": "string (text with keyword subfield for exact matching)",
"description": "string (text, searchable)",
"summary": "string (text, searchable)",
"phone": "string (keyword, exact match)",
"url": "string (keyword, exact match)",
"email": "string (keyword, exact match)",
"schedule": "string (text, searchable)",
"service_area": {
"type": "geo_shape",
"coordinates": [[["longitude", "latitude"]]]
},
"location": {
"name": "string (text with keyword subfield)",
"alternate_name": "string (text with keyword subfield)",
"description": "string (text, searchable)",
"summary": "string (text, searchable)",
"point": {
"lat": 48.7519,
"lon": -122.4787
},
"physical_address": {
"address_1": "string (text with keyword subfield)",
"address_2": "string (text with keyword subfield)",
"city": "string (keyword, exact match)",
"state": "string (keyword, exact match)",
"country": "string (keyword, exact match)",
"postal_code": "string (keyword, exact match)"
}
},
"service": {
"name": "string (text with keyword subfield)",
"alternate_name": "string (text with keyword subfield)",
"description": "string (text, searchable)",
"summary": "string (text, searchable)"
},
"organization": {
"name": "string (text with keyword subfield)",
"alternate_name": "string (text with keyword subfield)",
"description": "string (text, searchable)",
"summary": "string (text, searchable)"
},
"taxonomies": [
{
"code": "string (text with keyword subfield)",
"name": "string (text with keyword subfield)",
"description": "string (text, searchable)"
}
],
"facets": {
"[dynamic_facet_name]": "any value"
},
"tenant_id": "string (keyword, exact match)",
"priority": 0,
"pinned": false
}

Field Type Details

  • text: Full-text searchable, analyzed

  • keyword: Exact match, not analyzed

  • text with raw subfield: Searchable + exact match capability

  • geo_point: Geographic coordinates for distance queries

  • geo_shape: Geographic polygons/shapes for area queries

  • nested: Maintains object relationships in arrays

  • object: Dynamic object structure

  • integer/boolean: Typed system fields

This structure supports full-text search, geospatial queries, faceted filtering, and multi-language content through separate indices per locale.

Did this answer your question?