{"id":898,"date":"2026-04-16T14:50:59","date_gmt":"2026-04-16T14:50:59","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-oci-search-with-opensearch-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-data-management\/"},"modified":"2026-04-16T14:50:59","modified_gmt":"2026-04-16T14:50:59","slug":"oracle-cloud-oci-search-with-opensearch-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-data-management","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-oci-search-with-opensearch-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-data-management\/","title":{"rendered":"Oracle Cloud OCI Search with OpenSearch Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Data Management"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Data Management<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>OCI Search with OpenSearch is Oracle Cloud Infrastructure\u2019s managed service for running OpenSearch clusters without having to provision, patch, and operate the underlying infrastructure yourself. It\u2019s designed for building fast, scalable search and analytics solutions\u2014think full\u2011text search, log analytics, application observability, clickstream exploration, and near real\u2011time dashboards.<\/p>\n\n\n\n<p>In simple terms: you send JSON documents into an OpenSearch index, and you can query them quickly using OpenSearch\u2019s search DSL, aggregations, and dashboards. Oracle Cloud runs the cluster for you, handling common operational tasks like cluster provisioning and service-level integration points (identity, networking, monitoring) so you can focus on indexing and querying data.<\/p>\n\n\n\n<p>Technically, OCI Search with OpenSearch provisions an OpenSearch \u201cdomain\u201d (a managed OpenSearch deployment) inside a selected OCI region and compartment, wired into your network configuration. You interact with it through the OpenSearch REST API and OpenSearch Dashboards endpoint. You can scale capacity by changing node counts\/shapes, apply access controls, and integrate with upstream data pipelines (apps, functions, streaming, log collectors).<\/p>\n\n\n\n<p><strong>What problem it solves:<\/strong> teams want OpenSearch capabilities (search + analytics) without the time and risk of operating their own clusters on compute instances. OCI Search with OpenSearch reduces undifferentiated heavy lifting\u2014capacity planning, patching coordination (service-managed), endpoint lifecycle, and platform integration\u2014while still giving you the familiar OpenSearch APIs and tooling.<\/p>\n\n\n\n<blockquote>\n<p>Service name note (important): Oracle previously offered a managed Elasticsearch service under the \u201cOCI Search Service\u201d name. Today, the service is <strong>OCI Search with OpenSearch<\/strong>. If you find older references to \u201cElasticsearch\u201d in OCI Search documentation, treat them as legacy and <strong>verify in official Oracle docs<\/strong> which features and versions apply to OpenSearch in your region.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is OCI Search with OpenSearch?<\/h2>\n\n\n\n<p><strong>Official purpose (in practical terms):<\/strong> provide a managed OpenSearch environment on Oracle Cloud for indexing, searching, and analyzing large volumes of semi-structured data (JSON documents) using OpenSearch APIs and OpenSearch Dashboards.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed OpenSearch clusters (\u201cdomains\u201d)<\/strong>: create and run OpenSearch without managing VMs directly.<\/li>\n<li><strong>Indexing + search<\/strong>: near real-time ingestion, full-text search, filtering, sorting, and relevance tuning.<\/li>\n<li><strong>Analytics<\/strong>: aggregations, time-series exploration, and dashboards via OpenSearch Dashboards.<\/li>\n<li><strong>Operational controls<\/strong>: capacity sizing, scaling, and lifecycle operations through OCI.<\/li>\n<li><strong>Network + security controls<\/strong>: endpoint exposure control (public\/private options depending on service capabilities in your region), access control, encryption, and auditability.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Major components<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Domain (managed cluster)<\/strong>: the main resource you provision; includes OpenSearch nodes and endpoints.<\/li>\n<li><strong>OpenSearch API endpoint<\/strong>: REST endpoint used by applications, ingest pipelines, and CLI tools (<code>curl<\/code>, SDKs).<\/li>\n<li><strong>OpenSearch Dashboards endpoint<\/strong>: web UI for exploration, visualizations, and dashboarding.<\/li>\n<li><strong>Node pools \/ node roles (conceptual)<\/strong>: OpenSearch commonly uses node roles (cluster manager\/master, data, ingest). Exact node role options and minimum node requirements are service-defined\u2014<strong>verify in official docs<\/strong> for your selected OpenSearch version and region.<\/li>\n<li><strong>Storage<\/strong>: persistent storage for indexes (service-configured; typically block storage\u2013backed in managed offerings; exact implementation is OCI-managed).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed data service<\/strong> in the <strong>Data Management<\/strong> category.<\/li>\n<li>You use OpenSearch APIs, but OCI operates the underlying infrastructure.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scope and locality<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Regional<\/strong>: you create domains in a specific OCI region.<\/li>\n<li><strong>Compartment-scoped<\/strong>: domains live in a compartment and inherit governance (IAM policies, tags) accordingly.<\/li>\n<li>Networking attachment (VCN\/subnets\/endpoints) depends on service configuration; plan for region-level deployment patterns.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How it fits into the Oracle Cloud ecosystem<\/h3>\n\n\n\n<p>OCI Search with OpenSearch is typically used alongside:\n&#8211; <strong>OCI Networking (VCN, subnets, NSGs)<\/strong> to control access paths.\n&#8211; <strong>OCI Identity and Access Management (IAM)<\/strong> for who can create\/manage domains and related resources.\n&#8211; <strong>OCI Observability services<\/strong> (Monitoring, Logging, Events) to operate the service and integrate alerts\/automation. Some integrations are service-native; others are built via agents\/shippers\u2014<strong>verify in official docs<\/strong>.\n&#8211; <strong>Compute\/OKE\/Functions<\/strong> to run producers\/consumers that index and query data.\n&#8211; <strong>OCI Streaming<\/strong> for event pipelines feeding OpenSearch.\n&#8211; <strong>Object Storage<\/strong> for archival, data lake storage, and (in some OpenSearch designs) snapshot repositories\u2014confirm OCI Search with OpenSearch snapshot support and mechanisms in official docs.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use OCI Search with OpenSearch?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster time to value<\/strong>: start building search and analytics quickly without building an ops team around cluster maintenance.<\/li>\n<li><strong>Predictable operational burden<\/strong>: fewer \u201c2 a.m.\u201d incidents caused by misconfigured nodes, disk watermark issues, or ad-hoc upgrades.<\/li>\n<li><strong>Standard skills<\/strong>: OpenSearch is widely used; hiring and ramp-up tend to be easier than proprietary search systems.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OpenSearch API compatibility<\/strong>: existing OpenSearch tooling and clients often work with minimal changes.<\/li>\n<li><strong>Low-latency search + aggregations<\/strong>: built for interactive querying and dashboards on large datasets.<\/li>\n<li><strong>Flexible schema<\/strong>: JSON documents; can evolve fields over time with mappings and templates.<\/li>\n<li><strong>Built-in dashboards<\/strong>: quick data exploration without building custom UIs for every use case.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed provisioning<\/strong>: domain creation, endpoint management, and lifecycle operations via OCI console\/CLI\/API.<\/li>\n<li><strong>Scaling controls<\/strong>: change node counts\/shapes as workloads grow (exact online\/offline scaling behavior varies\u2014<strong>verify in docs<\/strong>).<\/li>\n<li><strong>Separation of duties<\/strong>: IAM governs who can administer the OCI resources, while OpenSearch security governs index\/data access (model varies by configuration).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Network isolation<\/strong>: deploy into controlled network paths (private access patterns or restricted public endpoints depending on options).<\/li>\n<li><strong>Encryption<\/strong>: TLS in transit and encryption at rest are common requirements; confirm OCI\u2019s exact defaults and configuration knobs in the official docs for your domain version\/region.<\/li>\n<li><strong>Auditability<\/strong>: OCI Audit records control-plane actions (create\/update\/delete). Data-plane logging is typically OpenSearch-level and may require configuration\u2014<strong>verify<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Designed for <strong>scale-out<\/strong> search (shards, replicas).<\/li>\n<li>Tunable indexing\/search performance via shard counts, refresh intervals, and instance sizing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You need <strong>search + analytics<\/strong> on semi-structured documents.<\/li>\n<li>You want <strong>dashboards and aggregation-heavy<\/strong> exploration (logs, metrics-like documents, clickstream).<\/li>\n<li>You want a <strong>managed<\/strong> OpenSearch instead of self-running on Compute\/OKE.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You need strong relational constraints and transactions \u2192 use <strong>Oracle Database \/ Autonomous Database<\/strong>.<\/li>\n<li>You need petabyte-scale SQL analytics on columnar storage \u2192 consider <strong>Autonomous Data Warehouse<\/strong> or data lakehouse patterns.<\/li>\n<li>You need a purely managed log analytics SaaS experience with minimal ingestion engineering \u2192 consider dedicated observability\/log analytics products (OCI has observability offerings; evaluate fit).<\/li>\n<li>You have strict feature requirements that depend on specific OpenSearch plugins not supported in managed service \u2192 validate plugin support first.<\/li>\n<li>You need cross-region active-active search with built-in replication \u2192 OpenSearch supports some replication patterns, but managed service capabilities differ; <strong>verify<\/strong> before committing.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is OCI Search with OpenSearch used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>E-commerce &amp; retail<\/strong>: product catalog search, faceted navigation, personalization signals.<\/li>\n<li><strong>Financial services<\/strong>: compliance search, audit trails, fraud signal exploration (with careful governance).<\/li>\n<li><strong>Telecom<\/strong>: network event analytics, incident triage.<\/li>\n<li><strong>Healthcare &amp; life sciences<\/strong>: search over clinical\/operational events (ensure HIPAA\/regulated controls are met).<\/li>\n<li><strong>Media &amp; SaaS<\/strong>: application logs, customer analytics, content search.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Platform\/DevOps\/SRE teams building shared search\/log analytics platforms.<\/li>\n<li>App teams implementing search in products (in-app search, knowledge bases).<\/li>\n<li>Data engineering teams building event pipelines and exploration layers.<\/li>\n<li>Security teams running detection search over normalized events (with careful design).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Full-text search over JSON documents.<\/li>\n<li>Log and event analytics (time-based indexes, dashboards).<\/li>\n<li>Observability enrichment and trace\/log correlation (often alongside metrics\/tracing systems).<\/li>\n<li>Clickstream exploration and session analytics.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Microservices pushing events to Streaming \u2192 consumers index into OpenSearch.<\/li>\n<li>Kubernetes workloads (OKE) using Fluent Bit\/Logstash-like shippers to index logs (compatibility varies; confirm supported ingestion patterns).<\/li>\n<li>ETL\/ELT pipelines that enrich and index documents from Object Storage or databases.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Production<\/strong>: mission-critical search endpoints for apps; operational dashboards for NOC\/SRE.<\/li>\n<li><strong>Dev\/test<\/strong>: ephemeral domains for pipeline validation; load testing of mappings and queries.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic, commonly deployed scenarios. Each includes the problem, why OCI Search with OpenSearch fits, and an example.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Application full-text search (knowledge base)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Users need fast search across articles, FAQs, and documentation with relevance ranking.<\/li>\n<li><strong>Why it fits:<\/strong> OpenSearch excels at full-text search (analyzers, tokenizers) and relevance scoring.<\/li>\n<li><strong>Example:<\/strong> A support portal indexes KB articles; queries use multi-match, fuzziness, synonyms, and highlighting.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) E-commerce catalog search with facets<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Search by keyword plus filters (brand, price range, availability) must remain fast at scale.<\/li>\n<li><strong>Why it fits:<\/strong> Aggregations + filter queries enable faceted navigation and fast counts.<\/li>\n<li><strong>Example:<\/strong> Index products; run <code>terms<\/code> aggregations for brand\/category plus range aggregations for price.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Centralized log analytics for microservices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Debugging incidents requires searching logs across many services and correlating by request ID.<\/li>\n<li><strong>Why it fits:<\/strong> Time-series indexes, fast search, and dashboards reduce MTTR.<\/li>\n<li><strong>Example:<\/strong> Structured JSON logs from OKE are indexed; dashboards show error rates; on-call searches by <code>traceId<\/code>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Security event search (SIEM-like exploration)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Analysts need to search authentication events, enrich signals, and pivot quickly.<\/li>\n<li><strong>Why it fits:<\/strong> Schema-flexible indexing and fast queries over large event volumes.<\/li>\n<li><strong>Example:<\/strong> IAM events are normalized and indexed; analysts search for impossible travel or repeated failures.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Clickstream analytics (session exploration)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Product teams want near real-time insights on user journeys and feature usage.<\/li>\n<li><strong>Why it fits:<\/strong> Aggregations over event data; dashboards for funnels (with careful modeling).<\/li>\n<li><strong>Example:<\/strong> Web events stream into OpenSearch; queries aggregate by campaign and device type.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Geo-search and \u201cnear me\u201d queries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Search results must consider geography (distance, bounding boxes).<\/li>\n<li><strong>Why it fits:<\/strong> Geo point\/shape queries support proximity search.<\/li>\n<li><strong>Example:<\/strong> A food delivery app queries restaurants within 5 km and boosts by rating.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Search over IoT telemetry metadata<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Operators must find devices and recent events quickly across a large fleet.<\/li>\n<li><strong>Why it fits:<\/strong> Fast filtering and aggregation on device IDs, firmware versions, and location.<\/li>\n<li><strong>Example:<\/strong> Index telemetry summaries; query for devices with specific error codes by region.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Document\/record search for internal operations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Staff need to search orders, tickets, and notes across multiple systems.<\/li>\n<li><strong>Why it fits:<\/strong> Consolidated index and cross-system search without heavy joins.<\/li>\n<li><strong>Example:<\/strong> ETL copies normalized records; internal portal queries across \u201corder\u201d and \u201cticket\u201d indexes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Metrics-like analytics using documents<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> You have custom metrics events not easily modeled in a traditional TSDB.<\/li>\n<li><strong>Why it fits:<\/strong> Aggregations over timestamped documents can approximate metrics dashboards.<\/li>\n<li><strong>Example:<\/strong> App emits KPI events; dashboards show percentile latencies via histogram fields (design-dependent).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Multi-tenant SaaS search with data isolation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A SaaS must ensure tenant data is isolated while offering fast search.<\/li>\n<li><strong>Why it fits:<\/strong> Can isolate by index-per-tenant or field-level tenant IDs plus access controls.<\/li>\n<li><strong>Example:<\/strong> Each tenant gets its own index pattern; application enforces tenant routing and credentials.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) APM-like trace\/log correlation (basic)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Trace IDs exist but aren\u2019t easily searchable across systems.<\/li>\n<li><strong>Why it fits:<\/strong> Index logs with trace IDs and span IDs; search and aggregate by service.<\/li>\n<li><strong>Example:<\/strong> Developers search <code>traceId:abc123<\/code> and pivot to all services touched.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Product analytics for feature flags and experiments<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Teams need fast exploration of experiment cohorts and outcomes.<\/li>\n<li><strong>Why it fits:<\/strong> Flexible schema and aggregations; dashboards for quick iteration.<\/li>\n<li><strong>Example:<\/strong> Index experiment exposure and conversion events; aggregate by cohort and timeframe.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<blockquote>\n<p>Feature availability can vary by OpenSearch version, region, and OCI Search with OpenSearch service limits. For anything you plan to rely on (snapshot\/restore behavior, fine-grained access control options, public\/private endpoints), <strong>verify in official docs<\/strong>.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Managed domain provisioning<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Creates a managed OpenSearch deployment (domain) with endpoints.<\/li>\n<li><strong>Why it matters:<\/strong> Eliminates manual VM setup, cluster bootstrap, and base configuration.<\/li>\n<li><strong>Practical benefit:<\/strong> You can provision a working cluster in minutes.<\/li>\n<li><strong>Caveats:<\/strong> Minimum node counts, supported versions, and upgrade paths are service-defined.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">OpenSearch REST API endpoint<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Provides API access for indexing, searching, and cluster operations (within permitted scope).<\/li>\n<li><strong>Why it matters:<\/strong> Enables application integration with standard OpenSearch clients.<\/li>\n<li><strong>Practical benefit:<\/strong> Use <code>curl<\/code>, language clients, Logstash-compatible shippers (where supported), and CI pipelines.<\/li>\n<li><strong>Caveats:<\/strong> Some cluster settings may be restricted in managed service.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">OpenSearch Dashboards endpoint<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Browser-based UI for index patterns, search, visualizations, and dashboards.<\/li>\n<li><strong>Why it matters:<\/strong> Lowers barrier for exploration and operational troubleshooting.<\/li>\n<li><strong>Practical benefit:<\/strong> Quickly build dashboards for logs, application search validation, and aggregation testing.<\/li>\n<li><strong>Caveats:<\/strong> Access should be restricted; dashboards can expose sensitive data.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Configurable capacity (node shapes and counts)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Lets you size compute and storage for OpenSearch nodes.<\/li>\n<li><strong>Why it matters:<\/strong> Performance and cost depend heavily on sizing.<\/li>\n<li><strong>Practical benefit:<\/strong> Start small, scale as usage grows.<\/li>\n<li><strong>Caveats:<\/strong> Scaling may require maintenance windows depending on service behavior.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network placement and access control<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Controls how clients reach the domain (for example, via private networking or restricted public endpoint options).<\/li>\n<li><strong>Why it matters:<\/strong> Search endpoints often become high-value targets.<\/li>\n<li><strong>Practical benefit:<\/strong> Reduce exposure by keeping traffic inside OCI networks or restricting ingress by CIDR.<\/li>\n<li><strong>Caveats:<\/strong> Exact capabilities differ by region and domain configuration\u2014verify options in console\/docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Authentication and authorization (data-plane)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Governs who can access OpenSearch APIs and what they can do (read\/write\/admin).<\/li>\n<li><strong>Why it matters:<\/strong> Prevents data leaks and destructive operations.<\/li>\n<li><strong>Practical benefit:<\/strong> Separate admin users from read-only dashboard users.<\/li>\n<li><strong>Caveats:<\/strong> Integration model can differ (basic auth vs. other methods). Confirm supported auth mechanisms in OCI docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption (in transit and at rest)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Protects data as it travels and while stored.<\/li>\n<li><strong>Why it matters:<\/strong> Common compliance requirement; reduces risk of interception\/exfiltration.<\/li>\n<li><strong>Practical benefit:<\/strong> Meet baseline security controls with minimal app changes.<\/li>\n<li><strong>Caveats:<\/strong> Confirm TLS versions\/ciphers and at-rest key management model (Oracle-managed vs customer-managed) in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Observability hooks (metrics, logs, events)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Exposes operational signals for the domain and supports alerting.<\/li>\n<li><strong>Why it matters:<\/strong> You need to detect disk pressure, CPU saturation, JVM pressure, and cluster health issues early.<\/li>\n<li><strong>Practical benefit:<\/strong> Build alarms for capacity and availability.<\/li>\n<li><strong>Caveats:<\/strong> Which metrics are available and how to access them is service-defined\u2014verify.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tagging and compartment governance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Uses OCI\u2019s tagging and compartment model for organization and cost tracking.<\/li>\n<li><strong>Why it matters:<\/strong> Search clusters can become cost hotspots without governance.<\/li>\n<li><strong>Practical benefit:<\/strong> Track ownership, environment, and cost center via tags.<\/li>\n<li><strong>Caveats:<\/strong> Tagging strategy must be enforced through IAM\/policies.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level service architecture<\/h3>\n\n\n\n<p>At a high level, OCI Search with OpenSearch looks like this:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>You create a <strong>domain<\/strong> in an OCI <strong>compartment<\/strong> and <strong>region<\/strong>.<\/li>\n<li>OCI provisions OpenSearch nodes (managed) and exposes:\n   &#8211; an <strong>OpenSearch API endpoint<\/strong> (for indexing and queries)\n   &#8211; an <strong>OpenSearch Dashboards endpoint<\/strong> (web UI)<\/li>\n<li>Your producers (apps, pipelines) send JSON documents to indexes.<\/li>\n<li>Your consumers (apps, analysts) query for search results and aggregations.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane (OCI API\/Console):<\/strong><\/li>\n<li>Create\/update\/delete domain<\/li>\n<li>Resize capacity<\/li>\n<li>Configure endpoint access (public\/private, CIDR allow lists, etc. depending on options)<\/li>\n<li>These actions are logged in <strong>OCI Audit<\/strong>.<\/li>\n<li><strong>Data plane (OpenSearch endpoints):<\/strong><\/li>\n<li>Indexing requests (<code>POST \/index\/_doc<\/code>)<\/li>\n<li>Search requests (<code>POST \/index\/_search<\/code>)<\/li>\n<li>Dashboard access (browser \u2192 Dashboards endpoint)<\/li>\n<li>These operations are governed by OpenSearch security configuration and network restrictions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services (common patterns)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>VCN\/Subnets\/NSGs<\/strong>: lock down which networks can reach the endpoints.<\/li>\n<li><strong>OCI Bastion<\/strong>: access private endpoints without exposing them publicly (if private endpoint is supported\/used).<\/li>\n<li><strong>OCI Streaming<\/strong>: feed event data to indexing consumers.<\/li>\n<li><strong>OCI Functions<\/strong>: lightweight consumers to transform and index events.<\/li>\n<li><strong>OKE \/ Compute<\/strong>: run log shippers or custom indexers.<\/li>\n<li><strong>OCI Monitoring + Alarms<\/strong>: notify on health issues and resource saturation.<\/li>\n<\/ul>\n\n\n\n<blockquote>\n<p>Some integrations are architectural patterns rather than one-click integrations. Always confirm the supported operational telemetry and integration points for OCI Search with OpenSearch in your region.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Networking (VCN) for routing and access control.<\/li>\n<li>IAM for permissioning who can manage domains.<\/li>\n<li>(Often) Object Storage \/ Streaming \/ Compute for the ingestion and retention architecture around OpenSearch.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model (practical view)<\/h3>\n\n\n\n<p>You typically have two layers:\n1. <strong>OCI IAM (control-plane):<\/strong> who can create, modify, and delete the domain resource.\n2. <strong>OpenSearch security (data-plane):<\/strong> who can access indexes and what operations they can run.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<p>Common models include:\n&#8211; <strong>Restricted public access<\/strong>: expose endpoints publicly but only allow your IP\/CIDR ranges. Good for labs and small teams; risky for production unless tightly controlled.\n&#8211; <strong>Private access<\/strong>: endpoints reachable only from private OCI networks (via VCN, DRG, VPN\/FastConnect). Preferred for production.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Monitor cluster health signals (CPU, memory\/JVM, disk watermark, thread pools, rejected requests, latency).<\/li>\n<li>Build alarms for disk utilization and \u201cred\/yellow\u201d cluster health.<\/li>\n<li>Apply tags: <code>env<\/code>, <code>owner<\/code>, <code>cost-center<\/code>, <code>data-classification<\/code>.<\/li>\n<li>Use compartments to separate dev\/test\/prod.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  User[Analyst \/ Developer] --&gt;|Browser| Dash[OpenSearch Dashboards Endpoint]\n  App[Application \/ Indexer] --&gt;|REST API| API[OpenSearch API Endpoint]\n  API --&gt; Domain[(OCI Search with OpenSearch Domain)]\n  Dash --&gt; Domain\n  Domain --&gt; Data[(Indexes \/ Shards)]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph OnPrem[On-Prem \/ External]\n    Devs[Admins\/Devs]\n    Users[App Users]\n  end\n\n  subgraph OCI[Oracle Cloud (Region)]\n    subgraph Net[VCN]\n      subgraph AppTier[App Tier]\n        OKE[OKE \/ Compute Apps]\n        Indexer[Indexer Service]\n      end\n\n      subgraph DataTier[Data Management]\n        OS[(OCI Search with OpenSearch Domain)]\n      end\n    end\n\n    Stream[OCI Streaming]\n    Mon[OCI Monitoring &amp; Alarms]\n    Audit[OCI Audit]\n    Vault[OCI Vault (secrets\/keys where applicable)]\n  end\n\n  Users --&gt; OKE\n  OKE --&gt;|search queries| OS\n  Indexer --&gt;|bulk indexing| OS\n  OKE --&gt;|events| Stream\n  Stream --&gt; Indexer\n\n  Devs --&gt;|OCI Console\/API| Audit\n  OS --&gt; Mon\n  Vault -.-&gt; OS\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Tenancy and account requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An active <strong>Oracle Cloud<\/strong> tenancy.<\/li>\n<li>Permission to create resources in a compartment in the target region.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM roles<\/h3>\n\n\n\n<p>For a smooth lab, the simplest path is:\n&#8211; Use a user in the <strong>Administrators<\/strong> group (or equivalent broad permissions) in a dedicated lab compartment.<\/p>\n\n\n\n<p>For least privilege in real environments:\n&#8211; Create a group for OpenSearch admins and grant only required permissions for OCI Search with OpenSearch resources, networking, and related services.\n&#8211; <strong>Policy syntax and resource types must match OCI\u2019s official docs<\/strong> (resource family names can be service-specific). Verify here before applying in production:\n  &#8211; https:\/\/docs.oracle.com\/en-us\/iaas\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A paid tenancy or credits.<\/li>\n<li>Ensure quota\/limits allow provisioning a domain (node count, storage).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tools (optional but recommended)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>curl<\/code> (for API calls).<\/li>\n<li><code>jq<\/code> (optional; JSON formatting).<\/li>\n<li>A modern browser (for OpenSearch Dashboards).<\/li>\n<li>OCI CLI (optional for automation): https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/API\/SDKDocs\/cliinstall.htm<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI Search with OpenSearch may not be available in every region or may have region-specific constraints.<\/li>\n<li>Confirm in the OCI console region selector and service availability pages (verify in official docs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Domain count limits, node limits, and storage limits apply.<\/li>\n<li>Confirm in <strong>OCI Limits, Quotas and Usage<\/strong> and the service documentation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services (for this tutorial)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI Networking (VCN, subnets, security lists\/NSGs) if the service requires\/uses VCN attachment.<\/li>\n<li>Optional: Vault (if you store credentials\/secrets externally), Bastion (if you use private endpoints).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<p>OCI Search with OpenSearch is a managed service with <strong>usage-based pricing<\/strong>. Exact prices vary by region and may change over time. Do not hardcode numbers into budgets\u2014always confirm using Oracle\u2019s official pricing pages and the cost estimator.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Official pricing resources<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Oracle Cloud Pricing (price list entry point): https:\/\/www.oracle.com\/cloud\/price-list\/<\/li>\n<li>OCI Cost Estimator: https:\/\/www.oracle.com\/cloud\/costestimator.html<br\/>\n  (If this URL redirects in your region, use Oracle\u2019s Cost Estimator link from the OCI console.)<\/li>\n<\/ul>\n\n\n\n<blockquote>\n<p>Look specifically for <strong>\u201cSearch with OpenSearch\u201d<\/strong> in the price list for your region\/currency.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Common pricing dimensions (typical model)<\/h3>\n\n\n\n<p>While you must confirm exact SKUs, managed OpenSearch pricing commonly includes:\n&#8211; <strong>Compute capacity<\/strong>: node shape capacity billed per time unit (for example, OCPU-hours).\n&#8211; <strong>Storage capacity<\/strong>: data storage billed per GB-month (and possibly separate for different storage tiers).\n&#8211; <strong>Data transfer<\/strong>: network egress charges when traffic leaves a region or goes to the internet; ingress is often free, but confirm OCI network pricing rules.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Primary cost drivers<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Number and size of nodes<\/strong>: biggest driver; more CPU\/RAM increases cost.<\/li>\n<li><strong>Storage size and performance<\/strong>: large indexes and replicas multiply storage usage.<\/li>\n<li><strong>Retention period<\/strong>: keeping logs for 30\/90\/365 days changes storage costs drastically.<\/li>\n<li><strong>Indexing rate<\/strong>: heavy ingestion increases CPU and can require more nodes.<\/li>\n<li><strong>Replica count<\/strong>: replicas improve availability and query throughput but multiply storage.<\/li>\n<li><strong>Cross-region or internet access<\/strong>: data transfer egress can surprise teams.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden\/indirect costs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Upstream ingestion infrastructure<\/strong>:<\/li>\n<li>Compute\/OKE nodes running shippers\/transformers<\/li>\n<li>Functions invocations<\/li>\n<li>Streaming partitions\/throughput<\/li>\n<li><strong>Observability costs<\/strong>:<\/li>\n<li>Logging ingestion\/storage if you mirror logs elsewhere<\/li>\n<li>Monitoring alarms (usually low cost, but confirm)<\/li>\n<li><strong>Backups\/snapshots<\/strong> (if supported):<\/li>\n<li>Object Storage capacity and requests<\/li>\n<li><strong>NAT Gateway \/ Load Balancer<\/strong> (if your network design uses them)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep producers and consumers <strong>in the same region<\/strong> when possible.<\/li>\n<li>Prefer <strong>private connectivity<\/strong> (VCN-local, VPN\/FastConnect) to avoid internet egress and reduce exposure.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost (practical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start with the smallest domain that meets your needs, then scale based on metrics.<\/li>\n<li>Use <strong>time-based indexes<\/strong> for logs and delete old indexes (Index Lifecycle Management options depend on OpenSearch and service support\u2014verify).<\/li>\n<li>Reduce replica count in dev\/test.<\/li>\n<li>Tune shard strategy: too many shards wastes memory\/CPU; too few can bottleneck.<\/li>\n<li>Control mapping explosion: unbounded dynamic fields can bloat indexes.<\/li>\n<li>Consider hot\/warm\/cold patterns if supported; otherwise, offload old data to Object Storage.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (no fabricated prices)<\/h3>\n\n\n\n<p>A realistic starter plan for a lab environment:\n&#8211; 1 small domain (minimum node count per service requirement)\n&#8211; Minimal storage allocation\n&#8211; Public endpoint restricted to your IP for a short time window\n&#8211; A few thousand test documents<\/p>\n\n\n\n<p>To estimate:\n1. Identify the <strong>smallest supported node shape<\/strong> and <strong>minimum node count<\/strong> in the console.\n2. Multiply (node hourly price \u00d7 hours in month) + (storage GB-month price \u00d7 GB).\n3. Add expected egress (likely near-zero if accessed locally).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>For production, cost planning should include:\n&#8211; HA requirements (multiple nodes, replicas, multi-AD design if supported)\n&#8211; Expected ingestion (GB\/day), retention (days), and query concurrency\n&#8211; Peak vs steady traffic (do you need scale-up during business hours?)\n&#8211; Disaster recovery strategy (cross-region, snapshot restore) and associated storage\/transfer costs<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab creates a small OCI Search with OpenSearch domain, restricts access to your IP, indexes sample data, runs searches, and then cleans everything up.<\/p>\n\n\n\n<blockquote>\n<p>Notes before you start:\n&#8211; Console screens and exact field names can change. Follow the intent of each step and <strong>verify in official docs<\/strong> if your console differs.\n&#8211; If your organization requires private endpoints only, adapt the networking steps accordingly (often using OCI Bastion or private connectivity).<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Provision an <strong>OCI Search with OpenSearch<\/strong> domain in Oracle Cloud, securely access <strong>OpenSearch Dashboards<\/strong>, index a sample dataset, run search and aggregation queries, and validate expected results.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Create a dedicated compartment (optional but recommended).\n2. Create a domain with restricted endpoint access.\n3. Access OpenSearch Dashboards.\n4. Index sample documents using <code>curl<\/code>.\n5. Run queries and aggregations.\n6. Validate and troubleshoot.\n7. Clean up resources to stop billing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Prepare a compartment and basic governance<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Sign in to the <strong>OCI Console<\/strong>.<\/li>\n<li>Create a compartment (recommended):\n   &#8211; <strong>Identity &amp; Security<\/strong> \u2192 <strong>Compartments<\/strong> \u2192 <strong>Create Compartment<\/strong>\n   &#8211; Name: <code>lab-opensearch<\/code>\n   &#8211; Description: <code>Labs for OCI Search with OpenSearch<\/code><\/li>\n<li>(Optional) Add tags for cost tracking:\n   &#8211; Tag key examples: <code>env=lab<\/code>, <code>owner=&lt;yourname&gt;<\/code>, <code>project=opensearch-lab<\/code><\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> You have a compartment dedicated to this lab to simplify cleanup and cost tracking.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Identify your public IP (for restricted access)<\/h3>\n\n\n\n<p>If you plan to use a restricted public endpoint for this lab, you need your client IP.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>From your workstation, find your public IP via a trusted method.<\/li>\n<li>You\u2019ll use a CIDR like: <code>YOUR_IP\/32<\/code><\/li>\n<\/ul>\n\n\n\n<p><strong>Expected outcome:<\/strong> You have a CIDR allow entry ready, such as <code>203.0.113.10\/32<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Create an OCI Search with OpenSearch domain<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the OCI Console, switch to the region you want to use.<\/li>\n<li>Navigate to the service:\n   &#8211; <strong>Oracle Cloud<\/strong> menu \u2192 find <strong>Search with OpenSearch<\/strong> (service names may be under Data Management).<\/li>\n<li>Click <strong>Create domain<\/strong> (or similar).<\/li>\n<li>Fill in the domain settings (typical required fields):\n   &#8211; <strong>Name<\/strong>: <code>lab-os-domain<\/code>\n   &#8211; <strong>Compartment<\/strong>: <code>lab-opensearch<\/code>\n   &#8211; <strong>OpenSearch version<\/strong>: choose a currently supported version offered in your region\n   &#8211; <strong>Shape \/ Node size<\/strong>: choose the smallest allowed for a lab\n   &#8211; <strong>Node count<\/strong>: minimum allowed by the service (commonly 1+; may require more\u2014follow console validation)\n   &#8211; <strong>Storage<\/strong>: minimal size sufficient for a few test docs<\/li>\n<li>Configure endpoint access:\n   &#8211; If the service offers a <strong>public endpoint<\/strong> option: enable it <strong>only for the lab<\/strong>.\n   &#8211; Restrict access by <strong>CIDR allow list<\/strong> and add <code>YOUR_IP\/32<\/code>.\n   &#8211; Ensure TLS\/HTTPS is enabled (it typically is by default).<\/li>\n<li>\n<p>Configure admin credentials if required:\n   &#8211; Many managed OpenSearch services require a <strong>master\/admin username and password<\/strong> for data-plane access.\n   &#8211; Store the password in a secure password manager.\n   &#8211; Consider using <strong>OCI Vault<\/strong> for long-term handling in real environments.<\/p>\n<\/li>\n<li>\n<p>Click <strong>Create<\/strong>.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<p>Wait until the domain status shows <strong>Active<\/strong> (or equivalent).<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> The domain is provisioned and you can see:\n&#8211; An <strong>OpenSearch API endpoint<\/strong> URL\n&#8211; An <strong>OpenSearch Dashboards<\/strong> URL<\/p>\n\n\n\n<blockquote>\n<p>If the domain remains \u201cCreating\u201d for an extended time or fails, check quotas, limits, and subnet\/network configuration requirements in the service docs.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Access OpenSearch Dashboards<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Copy the <strong>OpenSearch Dashboards endpoint<\/strong> from the domain details page.<\/li>\n<li>Open it in your browser.<\/li>\n<li>Authenticate (if prompted) using the admin credentials configured in Step 3.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> You can load the OpenSearch Dashboards UI.<\/p>\n\n\n\n<p><strong>Verification checklist:<\/strong>\n&#8211; You can navigate to index management (or similar UI section).\n&#8211; Cluster health is visible (if the UI exposes it).<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Index sample data with <code>curl<\/code><\/h3>\n\n\n\n<p>You will create an index and add a few documents using the <strong>OpenSearch API endpoint<\/strong>.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Set environment variables (macOS\/Linux shell):<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">export OS_ENDPOINT=\"https:\/\/YOUR-OPENSEARCH-API-ENDPOINT\"\nexport OS_USER=\"YOUR_ADMIN_USERNAME\"\nexport OS_PASS=\"YOUR_ADMIN_PASSWORD\"\n<\/code><\/pre>\n\n\n\n<p>On Windows PowerShell:<\/p>\n\n\n\n<pre><code class=\"language-powershell\">$env:OS_ENDPOINT=\"https:\/\/YOUR-OPENSEARCH-API-ENDPOINT\"\n$env:OS_USER=\"YOUR_ADMIN_USERNAME\"\n$env:OS_PASS=\"YOUR_ADMIN_PASSWORD\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Create an index with a simple mapping (example: a small product catalog).<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" \\\n  -H \"Content-Type: application\/json\" \\\n  -X PUT \"$OS_ENDPOINT\/products\" \\\n  -d '{\n    \"settings\": {\n      \"number_of_shards\": 1,\n      \"number_of_replicas\": 0\n    },\n    \"mappings\": {\n      \"properties\": {\n        \"productId\": {\"type\": \"keyword\"},\n        \"name\": {\"type\": \"text\"},\n        \"category\": {\"type\": \"keyword\"},\n        \"price\": {\"type\": \"double\"},\n        \"inStock\": {\"type\": \"boolean\"},\n        \"createdAt\": {\"type\": \"date\"}\n      }\n    }\n  }'\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Index a few documents:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" -H \"Content-Type: application\/json\" \\\n  -X POST \"$OS_ENDPOINT\/products\/_doc\/1\" \\\n  -d '{\"productId\":\"p-1001\",\"name\":\"Cloud Hoodie\",\"category\":\"apparel\",\"price\":49.99,\"inStock\":true,\"createdAt\":\"2026-01-10T12:00:00Z\"}'\n\ncurl -sS -u \"$OS_USER:$OS_PASS\" -H \"Content-Type: application\/json\" \\\n  -X POST \"$OS_ENDPOINT\/products\/_doc\/2\" \\\n  -d '{\"productId\":\"p-1002\",\"name\":\"DevOps Notebook\",\"category\":\"stationery\",\"price\":9.50,\"inStock\":true,\"createdAt\":\"2026-02-15T09:30:00Z\"}'\n\ncurl -sS -u \"$OS_USER:$OS_PASS\" -H \"Content-Type: application\/json\" \\\n  -X POST \"$OS_ENDPOINT\/products\/_doc\/3\" \\\n  -d '{\"productId\":\"p-1003\",\"name\":\"Oracle Cloud Sticker Pack\",\"category\":\"swag\",\"price\":4.00,\"inStock\":false,\"createdAt\":\"2026-03-02T18:45:00Z\"}'\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>Refresh the index so searches see the docs immediately (useful for labs):<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" -X POST \"$OS_ENDPOINT\/products\/_refresh\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Documents are indexed successfully, and refresh completes without errors.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Run searches and an aggregation<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Basic match query:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" -H \"Content-Type: application\/json\" \\\n  -X POST \"$OS_ENDPOINT\/products\/_search\" \\\n  -d '{\n    \"query\": {\n      \"match\": { \"name\": \"cloud\" }\n    }\n  }' | jq .\n<\/code><\/pre>\n\n\n\n<p>If you don\u2019t have <code>jq<\/code>, remove the pipe to <code>jq<\/code>.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Results include \u201cCloud Hoodie\u201d and possibly \u201cOracle Cloud Sticker Pack\u201d depending on analysis.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Filter query (in stock items):<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" -H \"Content-Type: application\/json\" \\\n  -X POST \"$OS_ENDPOINT\/products\/_search\" \\\n  -d '{\n    \"query\": {\n      \"bool\": {\n        \"filter\": [\n          {\"term\": {\"inStock\": true}}\n        ]\n      }\n    }\n  }'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Results include the two in-stock products.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Aggregation by category:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" -H \"Content-Type: application\/json\" \\\n  -X POST \"$OS_ENDPOINT\/products\/_search\" \\\n  -d '{\n    \"size\": 0,\n    \"aggs\": {\n      \"by_category\": {\n        \"terms\": { \"field\": \"category\" }\n      }\n    }\n  }'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Aggregation buckets show counts for <code>apparel<\/code>, <code>stationery<\/code>, and <code>swag<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Validate in OpenSearch Dashboards<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open Dashboards.<\/li>\n<li>Go to the area where you manage indexes \/ index patterns (terminology may differ by version).<\/li>\n<li>Create an index pattern for <code>products<\/code>.<\/li>\n<li>Use Discover (or equivalent) to see documents and run a query like <code>name:cloud<\/code>.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> You can browse the indexed documents in the UI and confirm queries match the API results.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Use these checks:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Cluster health<\/strong>:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" \"$OS_ENDPOINT\/_cluster\/health?pretty\"\n<\/code><\/pre>\n\n\n\n<p>Expected: status <code>green<\/code> or <code>yellow<\/code>.<br\/>\n&#8211; <code>yellow<\/code> is common in small labs when replicas &gt; 0. We set replicas to 0 to avoid that.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>Index exists<\/strong>:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" \"$OS_ENDPOINT\/_cat\/indices?v\"\n<\/code><\/pre>\n\n\n\n<p>Expected: <code>products<\/code> index is listed.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Doc count<\/strong>:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"$OS_USER:$OS_PASS\" \"$OS_ENDPOINT\/products\/_count?pretty\"\n<\/code><\/pre>\n\n\n\n<p>Expected: count is 3.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p>Common issues and fixes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>403 Forbidden or authentication failures<\/strong>\n&#8211; Cause: wrong username\/password, or OpenSearch security not configured as expected.\n&#8211; Fix:\n  &#8211; Re-check credentials.\n  &#8211; Confirm what authentication method your domain is configured for.\n  &#8211; If you changed the password, allow time for propagation (service-dependent).\n  &#8211; Verify in official docs how to reset admin credentials for OCI Search with OpenSearch.<\/p>\n<\/li>\n<li>\n<p><strong>Timeout \/ cannot connect<\/strong>\n&#8211; Cause: endpoint not reachable due to CIDR allow list, corporate proxy, VPN change, or incorrect URL.\n&#8211; Fix:\n  &#8211; Confirm you added the right <code>YOUR_IP\/32<\/code>.\n  &#8211; Confirm you\u2019re using HTTPS.\n  &#8211; If you changed networks, update the allow list.\n  &#8211; If you\u2019re required to use private endpoints, use OCI Bastion\/private connectivity instead of public endpoints.<\/p>\n<\/li>\n<li>\n<p><strong>Index created but searches return zero hits<\/strong>\n&#8211; Cause: refresh interval; documents not visible yet; indexing failed.\n&#8211; Fix:\n  &#8211; Run <code>_refresh<\/code>.\n  &#8211; Check response codes from indexing calls.\n  &#8211; Query <code>_count<\/code> to verify docs exist.<\/p>\n<\/li>\n<li>\n<p><strong>Mapping errors<\/strong>\n&#8211; Cause: field type conflicts (for example, sending a string into a <code>double<\/code> field).\n&#8211; Fix:\n  &#8211; Recreate the index with correct mappings (in labs).\n  &#8211; For production, use index templates and strict mapping controls.<\/p>\n<\/li>\n<li>\n<p><strong>Cluster health stays red<\/strong>\n&#8211; Cause: insufficient resources, disk full, shard allocation problems.\n&#8211; Fix:\n  &#8211; Check <code>_cluster\/health<\/code> and <code>_cluster\/allocation\/explain<\/code> (if allowed).\n  &#8211; Increase storage or reduce shard\/replica counts.\n  &#8211; Verify service limits and node sizing.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To stop billing, delete the resources you created.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Delete the OpenSearch domain:\n   &#8211; OCI Console \u2192 Search with OpenSearch \u2192 Domains \u2192 <code>lab-os-domain<\/code> \u2192 <strong>Delete<\/strong><\/li>\n<li>(Optional) Delete the compartment <code>lab-opensearch<\/code>:\n   &#8211; Ensure all resources inside are deleted first.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> Domain is removed and billing stops for those resources.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Design for data lifecycle<\/strong>:<\/li>\n<li>Use time-based indexes for logs\/events.<\/li>\n<li>Implement retention deletion (manual or automated).<\/li>\n<li><strong>Right-size shards<\/strong>:<\/li>\n<li>Avoid many tiny shards (overhead) and a few huge shards (slow recovery).<\/li>\n<li>Target shard sizing appropriate for your query patterns; validate with load tests.<\/li>\n<li><strong>Use bulk indexing<\/strong> for throughput:<\/li>\n<li>Prefer <code>_bulk<\/code> ingestion with batching and retry logic.<\/li>\n<li><strong>Plan for failure<\/strong>:<\/li>\n<li>Use replicas and enough nodes for availability (production).<\/li>\n<li>Test restore and recovery workflows.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Separate control-plane and data-plane access<\/strong>:<\/li>\n<li>Limit who can create\/resize\/delete domains.<\/li>\n<li>Limit who can read\/write indexes.<\/li>\n<li><strong>Least privilege<\/strong>:<\/li>\n<li>Use groups and compartments; avoid broad permissions outside platform admins.<\/li>\n<li><strong>Credential hygiene<\/strong>:<\/li>\n<li>Store admin credentials in a secret manager (OCI Vault) and rotate.<\/li>\n<li>Avoid embedding credentials in code or CI logs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Start small<\/strong> and scale with evidence:<\/li>\n<li>Use metrics-driven scaling.<\/li>\n<li><strong>Retention discipline<\/strong>:<\/li>\n<li>Old data is often the biggest cost. Archive to Object Storage when needed.<\/li>\n<li><strong>Avoid mapping explosion<\/strong>:<\/li>\n<li>Dynamic fields from untrusted JSON can balloon index size.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tune refresh intervals<\/strong> for heavy ingestion:<\/li>\n<li>Higher refresh intervals improve indexing throughput at cost of search freshness.<\/li>\n<li><strong>Use doc values and keyword fields<\/strong> for aggregations:<\/li>\n<li>Aggregate on <code>keyword<\/code>, not <code>text<\/code>.<\/li>\n<li><strong>Avoid wildcard queries on high-cardinality fields<\/strong> in production.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Use multi-node designs for production<\/strong> (minimums depend on your SLA and service constraints).<\/li>\n<li><strong>Monitor disk watermarks<\/strong> and JVM memory pressure.<\/li>\n<li><strong>Test upgrades<\/strong> (if you control versions) in dev\/test first.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dashboards access control<\/strong>:<\/li>\n<li>Restrict to admin networks; prefer private connectivity.<\/li>\n<li><strong>Standardize index templates<\/strong>:<\/li>\n<li>Enforce mappings, analyzers, and lifecycle patterns.<\/li>\n<li><strong>Run load tests<\/strong> with realistic queries and aggregation patterns before go-live.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Naming:<\/li>\n<li><code>env-app-purpose-region<\/code> (example: <code>prod-orders-search-iad<\/code>)<\/li>\n<li>Tagging:<\/li>\n<li><code>env<\/code>, <code>owner<\/code>, <code>cost-center<\/code>, <code>data-classification<\/code>, <code>retention-days<\/code><\/li>\n<li>Compartment separation:<\/li>\n<li>At least: <code>dev<\/code>, <code>test<\/code>, <code>prod<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OCI IAM<\/strong> governs who can manage the domain resource (create, delete, resize, view).<\/li>\n<li><strong>OpenSearch security<\/strong> governs who can access data and perform API actions.<\/li>\n<li>In production, ensure these are aligned:<\/li>\n<li>Platform team: control-plane management<\/li>\n<li>App\/service accounts: constrained write\/read to specific indexes<\/li>\n<li>Analysts: read-only to dashboards and approved indexes<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>In transit:<\/strong> Use HTTPS\/TLS to the OpenSearch API and Dashboards endpoints.<\/li>\n<li><strong>At rest:<\/strong> Managed services typically encrypt storage at rest. Confirm:<\/li>\n<li>Whether encryption is always on<\/li>\n<li>Whether you can use customer-managed keys (CMK) via OCI Vault<\/li>\n<li>Any limitations for key rotation<br\/>\n<strong>Verify in official OCI Search with OpenSearch docs<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer <strong>private connectivity<\/strong> for production.<\/li>\n<li>If using a public endpoint:<\/li>\n<li>Restrict ingress by CIDR allow lists<\/li>\n<li>Avoid <code>0.0.0.0\/0<\/code><\/li>\n<li>Consider WAF or additional network controls if applicable (depends on architecture)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Don\u2019t store admin credentials in:<\/li>\n<li>Source code<\/li>\n<li>Container images<\/li>\n<li>Plaintext environment files<\/li>\n<li>Use OCI Vault secrets and a delivery mechanism appropriate for your runtime (OKE secret integration, instance principals + secret retrieval, etc.).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable and review <strong>OCI Audit<\/strong> for control-plane actions.<\/li>\n<li>For data-plane auditing:<\/li>\n<li>Determine what OpenSearch audit logging is available and supported in managed service.<\/li>\n<li>Consider shipping OpenSearch logs to a secure log store for retention.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Classify your data:<\/li>\n<li>PII, PHI, payment data, secrets should be handled with strict controls.<\/li>\n<li>Enforce:<\/li>\n<li>encryption<\/li>\n<li>access policies<\/li>\n<li>retention\/deletion<\/li>\n<li>separation of environments<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Exposing Dashboards publicly without CIDR restrictions.<\/li>\n<li>Using a shared admin account for all access.<\/li>\n<li>Allowing dynamic mapping to ingest arbitrary fields (possible data exfiltration and cost blowups).<\/li>\n<li>Failing to enforce deletion\/retention (data hoarding risk).<\/li>\n<li>No backup\/restore validation (ransomware\/accidental deletion risk).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use private endpoints and access via VPN\/FastConnect or OCI Bastion.<\/li>\n<li>Use least privilege for both OCI IAM and OpenSearch roles.<\/li>\n<li>Implement secret rotation and remove long-lived credentials where possible.<\/li>\n<li>Document and test incident response steps (credential revocation, index write blocks, snapshot restore).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<blockquote>\n<p>Treat this section as a checklist to validate during design. Managed OpenSearch offerings differ significantly in what cluster-level knobs are exposed.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Known limitation categories (verify specifics in docs)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Supported OpenSearch versions<\/strong> are limited to what OCI offers.<\/li>\n<li><strong>Plugin availability<\/strong> may be restricted.<\/li>\n<li><strong>Cluster settings<\/strong> may be locked down to protect service stability.<\/li>\n<li><strong>Scaling operations<\/strong> might not be fully online; maintenance windows may be required.<\/li>\n<li><strong>Snapshot\/restore<\/strong> may be supported only in certain ways (or not exposed directly). Verify.<\/li>\n<li><strong>Private vs public endpoint options<\/strong> can be region\/service-version dependent.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas and service limits<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Max domains per tenancy\/compartment.<\/li>\n<li>Max nodes per domain.<\/li>\n<li>Max storage per node\/domain.<\/li>\n<li>Request size limits for <code>_bulk<\/code> and HTTP payloads.<\/li>\n<li><strong>Verify in official docs and OCI Limits<\/strong> for your tenancy.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Regional constraints<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Service not available in all regions.<\/li>\n<li>Different shape availability per region.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing surprises<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Storage grows faster than expected due to:<\/li>\n<li>replicas<\/li>\n<li>high-cardinality fields<\/li>\n<li>dynamic mapping<\/li>\n<li>too many indexes\/shards<\/li>\n<li>Data transfer costs if clients query from outside the region\/internet.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compatibility issues<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OpenSearch client versions: ensure compatibility between client library and OpenSearch server version.<\/li>\n<li>Dashboards version alignment.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational gotchas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201cYellow\u201d cluster health in small clusters due to replica settings.<\/li>\n<li>Shard overallocation causing memory pressure.<\/li>\n<li>Field mapping conflicts from inconsistent JSON types across documents.<\/li>\n<li>Hot shards: uneven routing causing one shard to handle disproportionate indexing\/query load.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Migration challenges<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Moving from self-managed Elasticsearch\/OpenSearch to managed OCI Search with OpenSearch:<\/li>\n<li>Validate supported versions and index compatibility.<\/li>\n<li>Plan reindexing and cutover strategy.<\/li>\n<li>Confirm how snapshots\/restore can be used (if supported).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Vendor-specific nuances<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Control-plane operations and IAM policies are OCI-specific.<\/li>\n<li>Endpoint patterns and network attachment models are OCI-specific.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>OCI Search with OpenSearch is one option among several, depending on whether you need full-text search, log analytics, or SQL analytics.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comparison table<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>OCI Search with OpenSearch<\/strong><\/td>\n<td>Managed OpenSearch search + analytics<\/td>\n<td>Managed operations, OpenSearch APIs, Dashboards, OCI governance<\/td>\n<td>Service constraints vs self-managed; must validate version\/plugin\/features<\/td>\n<td>You want OpenSearch capability without running clusters yourself<\/td>\n<\/tr>\n<tr>\n<td><strong>Self-managed OpenSearch on OCI Compute\/OKE<\/strong><\/td>\n<td>Maximum control and custom plugins<\/td>\n<td>Full control over config\/plugins; can match any topology<\/td>\n<td>Highest ops burden (patching, scaling, stability), more risk<\/td>\n<td>You need features\/plugins not available in managed service<\/td>\n<\/tr>\n<tr>\n<td><strong>Oracle Autonomous Database (JSON, text features)<\/strong><\/td>\n<td>Transactional apps with search-like needs<\/td>\n<td>Strong consistency, SQL, operational simplicity<\/td>\n<td>Not a drop-in replacement for OpenSearch; different query model<\/td>\n<td>Your primary data is relational\/transactional and search needs are secondary<\/td>\n<\/tr>\n<tr>\n<td><strong>OCI Logging \/ Observability services<\/strong><\/td>\n<td>Turnkey log management (service-dependent)<\/td>\n<td>Integrated with OCI, lower engineering for basic logging<\/td>\n<td>Not the same as OpenSearch; query\/retention features differ<\/td>\n<td>You need cloud-native logging with minimal cluster management<\/td>\n<\/tr>\n<tr>\n<td><strong>AWS OpenSearch Service<\/strong><\/td>\n<td>Managed OpenSearch on AWS<\/td>\n<td>Mature ecosystem; deep AWS integration<\/td>\n<td>Different cloud; egress and platform lock-in<\/td>\n<td>Your workloads are primarily on AWS<\/td>\n<\/tr>\n<tr>\n<td><strong>Azure AI Search \/ Elastic on Azure<\/strong><\/td>\n<td>Search services on Azure<\/td>\n<td>Strong Azure integration; managed offerings<\/td>\n<td>Different API models (Azure AI Search is not OpenSearch)<\/td>\n<td>You\u2019re standardized on Azure and want Azure-native search<\/td>\n<\/tr>\n<tr>\n<td><strong>Elastic (self-managed or managed)<\/strong><\/td>\n<td>Elasticsearch ecosystem<\/td>\n<td>Rich features in Elastic Stack<\/td>\n<td>Licensing\/cost model differences; not OpenSearch<\/td>\n<td>You rely on Elastic-specific features and licensing fits<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Centralized incident search for a microservices platform<\/h3>\n\n\n\n<p><strong>Problem<\/strong>\nA large enterprise runs hundreds of microservices on OCI (OKE + Compute). During incidents, engineers lose time correlating logs across services. They need a centralized, searchable log\/event layer with dashboards for error spikes, latency anomalies, and request correlation.<\/p>\n\n\n\n<p><strong>Proposed architecture<\/strong>\n&#8211; Apps emit structured JSON logs with <code>service<\/code>, <code>env<\/code>, <code>traceId<\/code>, <code>severity<\/code>, <code>timestamp<\/code>.\n&#8211; Logs flow into a pipeline (for example, Streaming \u2192 indexer service on OKE).\n&#8211; Indexer batches and writes to OCI Search with OpenSearch using <code>_bulk<\/code>.\n&#8211; Dashboards provide:\n  &#8211; error rate by service\n  &#8211; top exceptions\n  &#8211; request correlation using <code>traceId<\/code>\n&#8211; Network is private; access via VPN\/FastConnect and restricted admin subnets.<\/p>\n\n\n\n<p><strong>Why OCI Search with OpenSearch was chosen<\/strong>\n&#8211; Team wanted OpenSearch query flexibility and dashboards.\n&#8211; Managed domain reduced ops overhead and standardized deployment across compartments\/environments.\n&#8211; OCI governance (compartments\/tags\/audit) aligned with enterprise controls.<\/p>\n\n\n\n<p><strong>Expected outcomes<\/strong>\n&#8211; Faster incident triage (reduced MTTR).\n&#8211; Standard dashboards for on-call teams.\n&#8211; Controlled costs through retention policies and index lifecycle discipline.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: Product catalog search for an e-commerce MVP<\/h3>\n\n\n\n<p><strong>Problem<\/strong>\nA startup needs fast product search with filters (category, price, inStock) without building a complex infrastructure team.<\/p>\n\n\n\n<p><strong>Proposed architecture<\/strong>\n&#8211; Primary product data remains in a transactional database (managed relational).\n&#8211; A small sync job publishes product updates (CDC or periodic export).\n&#8211; Updates are indexed into OCI Search with OpenSearch.\n&#8211; Application queries OpenSearch for search results, then fetches authoritative details from the database if needed.<\/p>\n\n\n\n<p><strong>Why OCI Search with OpenSearch was chosen<\/strong>\n&#8211; Rapid setup and familiar APIs.\n&#8211; Dashboards help validate mappings, analyzers, and relevance tuning.\n&#8211; Startup can start small and scale later.<\/p>\n\n\n\n<p><strong>Expected outcomes<\/strong>\n&#8211; Better UX search relevance and faster results.\n&#8211; Lower engineering effort compared to running a cluster on VMs.\n&#8211; Clear scaling path as product count and traffic grow.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<p>1) <strong>Is OCI Search with OpenSearch the same as Elasticsearch?<\/strong><br\/>\nNo. OpenSearch is a separate open-source project. OCI Search with OpenSearch provides managed OpenSearch. OCI had older Elasticsearch-related offerings; verify what applies to your tenancy and region in current docs.<\/p>\n\n\n\n<p>2) <strong>Do I get standard OpenSearch APIs?<\/strong><br\/>\nYou typically interact using the OpenSearch REST API and Dashboards. Some cluster\/admin APIs may be restricted in managed services. Validate required APIs in testing.<\/p>\n\n\n\n<p>3) <strong>Is the service regional?<\/strong><br\/>\nYes\u2014domains are created in a specific OCI region and compartment.<\/p>\n\n\n\n<p>4) <strong>Can I make the endpoint private-only?<\/strong><br\/>\nMany managed offerings support private networking patterns, but exact options vary. Check domain configuration options in your OCI console and verify in docs.<\/p>\n\n\n\n<p>5) <strong>How do I restrict access for a lab domain?<\/strong><br\/>\nUse CIDR allow lists on the endpoint (if supported) and restrict to <code>YOUR_IP\/32<\/code>. For production, prefer private connectivity.<\/p>\n\n\n\n<p>6) <strong>What\u2019s the minimum size for a domain?<\/strong><br\/>\nMinimum node count and shapes are service-defined and can change by region\/version. Use the console\u2019s minimum validated configuration and confirm in docs.<\/p>\n\n\n\n<p>7) <strong>How do I ingest data efficiently?<\/strong><br\/>\nUse <code>_bulk<\/code> with batching, retries, and backoff. Model indexes and mappings carefully to avoid rework.<\/p>\n\n\n\n<p>8) <strong>Why is my cluster health yellow?<\/strong><br\/>\nCommonly because replicas cannot be allocated in a single-node\/small cluster. Set replicas to 0 in dev or add nodes\/replicas for production.<\/p>\n\n\n\n<p>9) <strong>Can I use OpenSearch Dashboards to build log dashboards?<\/strong><br\/>\nYes, assuming your data is indexed appropriately and you have access. Protect Dashboards as it can expose sensitive data.<\/p>\n\n\n\n<p>10) <strong>How do I handle retention?<\/strong><br\/>\nCommon patterns include time-based indexes and deleting old indexes. OpenSearch lifecycle features may help; verify what\u2019s supported in your managed domain.<\/p>\n\n\n\n<p>11) <strong>Do I need a relational database as well?<\/strong><br\/>\nOften yes. OpenSearch is not a transactional source of truth. Many architectures store authoritative data in a database and index a searchable projection into OpenSearch.<\/p>\n\n\n\n<p>12) <strong>How do I estimate storage needs?<\/strong><br\/>\nMeasure with real sample data. Storage is affected by mappings, analyzers, replicas, and indexing overhead. Plan for growth and retention.<\/p>\n\n\n\n<p>13) <strong>What are common causes of poor query performance?<\/strong><br\/>\nToo many shards, heavy wildcard queries, aggregating on <code>text<\/code> fields, insufficient memory, or unoptimized mappings.<\/p>\n\n\n\n<p>14) <strong>Can I integrate with OCI Monitoring?<\/strong><br\/>\nOCI services commonly integrate with Monitoring for metrics and alarms, but the exact metric set is service-specific. Confirm in official docs for OCI Search with OpenSearch.<\/p>\n\n\n\n<p>15) <strong>How do I migrate from self-managed OpenSearch?<\/strong><br\/>\nPlan compatibility (version\/mappings), reindex strategy, cutover, and verify snapshot\/restore capabilities for managed service. Test performance and access controls before production cutover.<\/p>\n\n\n\n<p>16) <strong>Is OCI Search with OpenSearch suitable for SIEM?<\/strong><br\/>\nIt can support security event search, but SIEM requires strong governance, retention, access control, and often specialized detection content. Evaluate carefully and validate compliance requirements.<\/p>\n\n\n\n<p>17) <strong>How do I prevent accidental deletions or destructive operations?<\/strong><br\/>\nUse least privilege, separate admin credentials, restrict <code>delete<\/code> permissions at the OpenSearch role level, and implement backups\/restore testing if supported.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn OCI Search with OpenSearch<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation<\/td>\n<td>OCI Documentation (entry) \u2013 https:\/\/docs.oracle.com\/en-us\/iaas\/<\/td>\n<td>Starting point to find the OCI Search with OpenSearch docs for your region\/version<\/td>\n<\/tr>\n<tr>\n<td>Official product docs<\/td>\n<td>OCI Search with OpenSearch documentation (find under Data Management in docs) \u2013 https:\/\/docs.oracle.com\/en-us\/iaas\/<\/td>\n<td>Authoritative configuration, limits, networking, and security guidance (verify exact URL path in docs navigation)<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>Oracle Cloud Price List \u2013 https:\/\/www.oracle.com\/cloud\/price-list\/<\/td>\n<td>Official SKUs and regional pricing references<\/td>\n<\/tr>\n<tr>\n<td>Pricing calculator<\/td>\n<td>OCI Cost Estimator \u2013 https:\/\/www.oracle.com\/cloud\/costestimator.html<\/td>\n<td>Build estimates based on node\/storage sizing<\/td>\n<\/tr>\n<tr>\n<td>Official tutorials\/labs<\/td>\n<td>Oracle LiveLabs \u2013 https:\/\/livelabs.oracle.com\/<\/td>\n<td>Hands-on labs; search the catalog for \u201cOpenSearch\u201d and \u201cSearch with OpenSearch\u201d<\/td>\n<\/tr>\n<tr>\n<td>Official videos<\/td>\n<td>Oracle Cloud YouTube channel \u2013 https:\/\/www.youtube.com\/@OracleCloudInfrastructure<\/td>\n<td>Webinars, service walkthroughs, and architecture guidance (search within channel for OpenSearch)<\/td>\n<\/tr>\n<tr>\n<td>SDK\/CLI<\/td>\n<td>OCI CLI install \u2013 https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/API\/SDKDocs\/cliinstall.htm<\/td>\n<td>Automate domain lifecycle where supported<\/td>\n<\/tr>\n<tr>\n<td>OpenSearch upstream docs<\/td>\n<td>OpenSearch documentation \u2013 https:\/\/opensearch.org\/docs\/<\/td>\n<td>Query DSL, index management, dashboards usage (pairs with OCI-managed specifics)<\/td>\n<\/tr>\n<tr>\n<td>Community learning<\/td>\n<td>OpenSearch forums\/community \u2013 https:\/\/forum.opensearch.org\/<\/td>\n<td>Practical troubleshooting and query\/mapping patterns (validate against OCI managed constraints)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps engineers, SREs, platform teams<\/td>\n<td>DevOps, cloud operations, automation around managed services<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>DevOps fundamentals, tooling, CI\/CD and cloud basics<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud operations practitioners<\/td>\n<td>Cloud ops, monitoring, reliability practices<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs and operations teams<\/td>\n<td>SRE principles, incident management, monitoring for production systems<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops and platform teams<\/td>\n<td>AIOps concepts, automation, operational analytics<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>DevOps\/cloud training content (verify current offerings)<\/td>\n<td>Engineers seeking guided training<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training programs (verify syllabus)<\/td>\n<td>Beginners to advanced DevOps learners<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance DevOps help\/training (verify services)<\/td>\n<td>Teams needing short-term assistance<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support and training resources (verify scope)<\/td>\n<td>Ops teams needing practical support<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting (verify current services)<\/td>\n<td>Architecture reviews, implementation help, operations<\/td>\n<td>Design an ingestion pipeline into OCI Search with OpenSearch; set up monitoring\/alerting<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps consulting and enablement<\/td>\n<td>Platform engineering, CI\/CD, operational maturity<\/td>\n<td>Build runbooks, SRE practices, automation for domain lifecycle<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting (verify service catalog)<\/td>\n<td>Delivery support, cloud migration patterns<\/td>\n<td>Migration planning from self-managed OpenSearch to managed OCI Search with OpenSearch<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before OCI Search with OpenSearch<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OpenSearch basics<\/strong>:<\/li>\n<li>Index, document, mapping, analyzer<\/li>\n<li>Query DSL basics (<code>match<\/code>, <code>term<\/code>, <code>bool<\/code>, aggregations)<\/li>\n<li><strong>OCI fundamentals<\/strong>:<\/li>\n<li>Compartments, VCN, subnets, NSGs\/security lists<\/li>\n<li>IAM users\/groups\/policies<\/li>\n<li>Basic cost governance (tags, budgets)<\/li>\n<li><strong>Data engineering basics<\/strong>:<\/li>\n<li>JSON modeling<\/li>\n<li>Batch vs streaming ingestion<\/li>\n<li>Retry\/backoff patterns for APIs<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Scaling and performance engineering<\/strong>:<\/li>\n<li>Shard strategy, indexing throughput tuning<\/li>\n<li>Query profiling and caching behavior<\/li>\n<li><strong>Production reliability<\/strong>:<\/li>\n<li>SLOs\/SLIs, capacity planning, incident response<\/li>\n<li><strong>Secure multi-tenant design<\/strong>:<\/li>\n<li>Index-per-tenant vs shared index, role design, auditability<\/li>\n<li><strong>Automation<\/strong>:<\/li>\n<li>Terraform for OCI resources (verify provider support for OCI Search with OpenSearch resources)<\/li>\n<li>CI\/CD for index templates, dashboards objects (where feasible)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud engineer<\/li>\n<li>DevOps engineer \/ SRE<\/li>\n<li>Platform engineer<\/li>\n<li>Data engineer<\/li>\n<li>Backend engineer building search<\/li>\n<li>Security analyst\/engineer (event search use cases)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>Oracle\u2019s certification landscape changes over time. There may not be a certification dedicated specifically to OCI Search with OpenSearch. A practical path:\n&#8211; OCI Foundations\n&#8211; OCI Architect (Associate\/Professional)\n&#8211; Complement with OpenSearch\/Elasticsearch-focused learning<br\/>\n<strong>Verify current Oracle certifications<\/strong>: https:\/\/education.oracle.com\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Build a small log analytics pipeline (generate JSON logs \u2192 bulk index \u2192 dashboards).<\/li>\n<li>Create an e-commerce catalog search with facets and autocomplete (edge n-gram analyzers\u2014confirm supported settings).<\/li>\n<li>Implement index templates and a retention deletion script.<\/li>\n<li>Load test: compare different shard\/replica strategies under query concurrency.<\/li>\n<li>Implement secure access: separate read-only dashboard users from write-only ingestion users.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OpenSearch<\/strong>: Open-source search and analytics engine for indexing JSON documents and running fast queries\/aggregations.<\/li>\n<li><strong>OCI Search with OpenSearch<\/strong>: Oracle Cloud managed service to run OpenSearch domains.<\/li>\n<li><strong>Domain<\/strong>: A managed OpenSearch deployment (cluster) you provision in OCI.<\/li>\n<li><strong>Index<\/strong>: A logical collection of documents (similar to a database table, conceptually).<\/li>\n<li><strong>Document<\/strong>: A JSON record stored in an index.<\/li>\n<li><strong>Mapping<\/strong>: Schema definition for fields in an index (types like <code>keyword<\/code>, <code>text<\/code>, <code>date<\/code>).<\/li>\n<li><strong>Analyzer<\/strong>: Text processing chain used for full-text search (tokenizers, filters).<\/li>\n<li><strong>Shard<\/strong>: A partition of an index. More shards can increase parallelism but add overhead.<\/li>\n<li><strong>Replica<\/strong>: A copy of a shard for high availability and read scaling.<\/li>\n<li><strong>Aggregation<\/strong>: Analytics computation (counts, histograms, terms buckets) performed during search.<\/li>\n<li><strong>Refresh<\/strong>: Operation that makes newly indexed documents searchable.<\/li>\n<li><strong>CIDR allow list<\/strong>: Network rule restricting access to specified IP ranges.<\/li>\n<li><strong>Compartment (OCI)<\/strong>: A logical isolation and governance boundary for OCI resources.<\/li>\n<li><strong>IAM (OCI)<\/strong>: Identity and Access Management; controls who can manage OCI resources.<\/li>\n<li><strong>Control plane vs data plane<\/strong>: Control plane manages resources; data plane is the actual search\/index traffic.<\/li>\n<li><strong>Bulk API (<code>_bulk<\/code>)<\/strong>: OpenSearch endpoint for indexing many documents in a single request.<\/li>\n<li><strong>Dashboards<\/strong>: OpenSearch UI for discovery and visualization (OpenSearch Dashboards).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>OCI Search with OpenSearch is Oracle Cloud\u2019s managed OpenSearch service in the <strong>Data Management<\/strong> category, used to build fast search and analytics solutions without running OpenSearch clusters yourself. It fits best when you need full-text search, filtering, and aggregations at scale\u2014especially for log\/event analytics and application search\u2014while benefiting from OCI\u2019s governance model (compartments, IAM, audit) and managed operations.<\/p>\n\n\n\n<p>Key points to remember:\n&#8211; <strong>Cost<\/strong> is primarily driven by node sizing\/count and storage, plus potential data transfer and ingestion infrastructure.\n&#8211; <strong>Security<\/strong> requires careful endpoint exposure control, least privilege for both OCI IAM (control plane) and OpenSearch roles (data plane), and disciplined secrets management.\n&#8211; Use it when you want OpenSearch capabilities with reduced ops overhead; avoid it when you need a transactional system of record or require unsupported plugins\/features.<\/p>\n\n\n\n<p>Next step: read the <strong>official OCI Search with OpenSearch documentation<\/strong> for your region\/version, then extend this lab by building a small ingestion pipeline (Streaming \u2192 indexer \u2192 <code>_bulk<\/code>) and adding dashboards plus alarms for cluster health.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Data Management<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68,62],"tags":[],"class_list":["post-898","post","type-post","status-publish","format-standard","hentry","category-data-management","category-oracle-cloud"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=898"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/898\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}