<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/building-search-experiences-for-json-data-with-amazon-opensearch-service-xxvsjl0hp" -->

---
title: Building search experiences for JSON data with Amazon...
description: Amazon OpenSearch Service can serve as a dedicated discovery layer on top of operational data stores like DynamoDB, DocumentDB, and Aurora, combining...
canonical: https://daily.dev/posts/building-search-experiences-for-json-data-with-amazon-opensearch-service-xxvsjl0hp
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Building search experiences for JSON data with Amazon OpenSearch Service | daily.dev
og:description: Amazon OpenSearch Service can serve as a dedicated discovery layer on top of operational data stores like DynamoDB, DocumentDB, and Aurora, combining...
og:url: https://daily.dev/posts/building-search-experiences-for-json-data-with-amazon-opensearch-service-xxvsjl0hp
og:image: https://api.daily.dev/og/posts/xXvSJL0Hp.png
og:image:alt: Building search experiences for JSON data with Amazon OpenSearch Service
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Building search experiences for JSON data with Amazon OpenSearch Service

**[AWS Database Blog](https://daily.dev/sources/aws-database-blog)** · 12 min read · 0 upvotes · 0 comments

## Summary

Amazon OpenSearch Service can serve as a dedicated discovery layer on top of operational data stores like DynamoDB, DocumentDB, and Aurora, combining full-text, vector, and geospatial search in a single JSON query. Using a restaurant discovery app as a working example, the post covers index mapping strategies (per-field indexing, nested objects, knn_vector for embeddings), text analysis with English analyzers and synonym expansion, HNSW-based vector search for semantic matching, geo_point-based proximity filtering, and hybrid queries that merge all three modalities. It also covers CDC-based ingestion via OpenSearch Ingestion, common mapping pitfalls, and when to keep data in source stores versus syncing to OpenSearch.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://aws.amazon.com/blogs/database/building-search-experiences-for-json-data-with-amazon-opensearch-service>

## Questions this post answers

### How do I combine full-text, vector, and geospatial search in a single OpenSearch query?

OpenSearch Service supports a compound hybrid query that merges all three modalities in one request. A multi_match clause handles full-text with field-level boosting (e.g., name^2), a neural clause provides semantic vector matching, and a geo_distance filter prunes documents by radius before scoring. A range filter can enforce hard constraints like minimum rating. Efficient filtering in OpenSearch Service 3.x allows inline filter clauses directly inside the hybrid query.

_Engineers shipping location-aware search features track OpenSearch query patterns and version changes on daily.dev._

### What is the difference between HNSW and IVF for vector search in OpenSearch?

HNSW (Hierarchical Navigable Small World) delivers recall above 95% with sub-millisecond query latency and is the default choice for most vector workloads. For datasets exceeding 1 billion vectors, IVF (Inverted File Index) reduces search scope by partitioning the vector space to improve latency, while quantization algorithms compress vector representations to reduce memory footprint. Choose IVF when latency is the bottleneck and quantization when memory is constrained.

_Developers choosing between vector index strategies for large-scale search find relevant comparisons on daily.dev._

### Why should I use the nested type instead of object for arrays in OpenSearch mappings?

Standard object mappings flatten array elements during indexing, collapsing boundaries between items and causing cross-element value matches that produce incorrect query results. The nested type preserves each array element as an independent document internally, so a query targeting a specific menu item's name and price only matches when both values belong to the same element, not across different items in the array.

_Getting OpenSearch mappings right before indexing production data is the kind of detail developers follow on daily.dev._

## Similar posts on daily.dev

- [S3 Vectors with OpenSearch: Cost-Efficient Hybrid Vector Search](https://daily.dev/posts/s3-vectors-with-opensearch-cost-efficient-hybrid-vector-search-xabkmmtbp) · BigData Boutique blog · 1 upvotes · 0 comments
- [Amazon OpenSearch Service improves vector database performance and cost with GPU acceleration and auto-optimization](https://daily.dev/posts/amazon-opensearch-service-improves-vector-database-performance-and-cost-with-gpu-acceleration-and-au-tjpv4styo) · AWS · 0 upvotes · 0 comments
- [Amazon OpenSearch Service now supports OpenSearch version 3.7](https://daily.dev/posts/amazon-opensearch-service-now-supports-opensearch-version-3-7-wkqtg7wcc) · AWS · 0 upvotes · 0 comments
- [AWS Introduces Native Vector Search for DynamoDB](https://daily.dev/posts/aws-introduces-native-vector-search-for-dynamodb-nn2cx8i4z) · InfoQ · 0 upvotes · 0 comments

---

Tags: [#rag](https://daily.dev/tags/rag), [#vector-search](https://daily.dev/tags/vector-search), [#opensearch](https://daily.dev/tags/opensearch), [#full-text-search](https://daily.dev/tags/full-text-search)

[View this post on daily.dev](https://daily.dev/posts/building-search-experiences-for-json-data-with-amazon-opensearch-service-xxvsjl0hp)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Building search experiences for JSON data with Amazon OpenSearch Service","url":"https://daily.dev/posts/building-search-experiences-for-json-data-with-amazon-opensearch-service-xxvsjl0hp","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/building-search-experiences-for-json-data-with-amazon-opensearch-service-xxvsjl0hp"},"datePublished":"2026-08-11T16:22:45.263Z","dateModified":"2026-08-11T16:23:17.283Z","description":"Amazon OpenSearch Service can serve as a dedicated discovery layer on top of operational data stores like DynamoDB, DocumentDB, and Aurora, combining...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/1caf1cda982303047220b9e2aff9f645?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/1caf1cda982303047220b9e2aff9f645?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"AWS Database Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"AWS Database Blog","logo":"https://media.daily.dev/image/upload/s--En-avd2a--/f_auto,q_auto/v1780213446/logos/aws-database-blog?_a=BAMAMiWQ0","url":"https://daily.dev/sources/aws-database-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/building-search-experiences-for-json-data-with-amazon-opensearch-service-xxvsjl0hp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"rag,vector-search,opensearch,full-text-search","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"AWS Database Blog","item":"https://daily.dev/sources/aws-database-blog"},{"@type":"ListItem","position":3,"name":"Building search experiences for JSON data with Amazon OpenSearch Service"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/building-search-experiences-for-json-data-with-amazon-opensearch-service-xxvsjl0hp#faq","mainEntity":[{"@type":"Question","name":"How do I combine full-text, vector, and geospatial search in a single OpenSearch query?","acceptedAnswer":{"@type":"Answer","text":"OpenSearch Service supports a compound hybrid query that merges all three modalities in one request. A multi_match clause handles full-text with field-level boosting (e.g., name^2), a neural clause provides semantic vector matching, and a geo_distance filter prunes documents by radius before scoring. A range filter can enforce hard constraints like minimum rating. Efficient filtering in OpenSearch Service 3.x allows inline filter clauses directly inside the hybrid query. Engineers shipping location-aware search features track OpenSearch query patterns and version changes on daily.dev."}},{"@type":"Question","name":"What is the difference between HNSW and IVF for vector search in OpenSearch?","acceptedAnswer":{"@type":"Answer","text":"HNSW (Hierarchical Navigable Small World) delivers recall above 95% with sub-millisecond query latency and is the default choice for most vector workloads. For datasets exceeding 1 billion vectors, IVF (Inverted File Index) reduces search scope by partitioning the vector space to improve latency, while quantization algorithms compress vector representations to reduce memory footprint. Choose IVF when latency is the bottleneck and quantization when memory is constrained. Developers choosing between vector index strategies for large-scale search find relevant comparisons on daily.dev."}},{"@type":"Question","name":"Why should I use the nested type instead of object for arrays in OpenSearch mappings?","acceptedAnswer":{"@type":"Answer","text":"Standard object mappings flatten array elements during indexing, collapsing boundaries between items and causing cross-element value matches that produce incorrect query results. The nested type preserves each array element as an independent document internally, so a query targeting a specific menu item's name and price only matches when both values belong to the same element, not across different items in the array. Getting OpenSearch mappings right before indexing production data is the kind of detail developers follow on daily.dev."}}]}
```

