Logo
NeoArc Studio

Search

Design search indexes within the central model, target 6 search engine vendors with profile-based configuration, and detect drift between design-time schemas and deployed indexes.

The search system in NeoArc Studio brings search index design into the central model. Each property in the graph model opts in to search projections via per-property configuration, defining field types, behaviours, analysers, vector search settings, and per-profile overrides. Search profiles map canonical model types to engine-specific types for 6 search engine vendors. Data Views in search mode provide an interactive graph-based visualisation of index projections with profile-aware type and name resolution. Click any entity node to open the Entity Overlay showing the full search field configuration. Drift detection compares the design-time schema against deployed indexes, surfacing discrepancies before they reach production.

Key Capabilities

Per-Property Configuration
Each model property opts in to search projections individually. Configure field type, behaviours, analyser, boost, vector dimensions, sub-fields, and per-profile overrides directly on the property.
6 Engine Profiles
Create search profiles targeting Elasticsearch, Azure Cognitive Search, OpenSearch, Typesense, Algolia, or a custom engine. Each profile defines naming conventions, type mappings, analyser defaults, and operational strategies.
Search Views
Visualise index projections as 10-column tables. Each entity renders with resolved field names, mapped types, behaviour flags, analyser assignments, and boost values, all driven by the active search profile.
Drift Detection
Export the design-time schema, paste the deployed index mapping, and compare. The drift report categorises discrepancies as errors, warnings, or informational items with field-level detail.

Supported Engines

Search profiles target one of 6 search engine vendors. Each profile stores engine-specific type mappings, naming conventions, and operational settings.

EngineIDDefault CasingDefault AnalyserDescription
ElasticsearchelasticsearchcamelCasestandardOpen-source distributed search and analytics engine
Azure Cognitive Searchazure-cognitive-searchcamelCasestandard.luceneMicrosoft Azure managed search service
OpenSearchopensearchcamelCasestandardAWS-backed open-source search and analytics suite
TypesensetypesensecamelCasedefaultOpen-source typo-tolerant search engine
AlgoliaalgoliacamelCase(schemaless)Hosted search-as-a-service platform
CustomcustomcamelCase(configurable)Custom or unlisted search engine

Search Behaviours

Five core behaviours control how each field participates in search operations. These are configured per property in the model and displayed as YES/NO columns in search views.

BehaviourDescription
SearchableField is included in full-text search queries
FilterableField supports filter expressions (exact match, range)
SortableField is available for sorting results
FacetableField is available for faceted navigation and counts
RetrievableField is returned in search results

Search Field Types

17 search field types across 7 categories define how values are indexed and queried.

CategoryTypesDescription
Texttext, keyword, completionFull-text analysed, exact match (not analysed), and autocomplete/suggest
Numericinteger, long, float, double, half_float, scaled_floatSix numeric types covering all precision requirements
Boolean and Dateboolean, dateLogical flags and temporal values
Geogeo_point, geo_shapeGeographic coordinates and shapes for spatial queries
Structuredobject, nestedEmbedded objects and nested documents for complex hierarchies
Vectordense_vectorHigh-dimensional embedding vectors for semantic and similarity search
BinarybinaryRaw binary data stored as Base64-encoded strings

Engine Features

Not every engine supports every feature. The engine features matrix shows exactly which capabilities are available for each vendor.

Text Analysis

Text analysis determines how field values are tokenised, normalised, and indexed. Built-in analysers are available per engine, custom analyser composition, and synonym maps.

Sub-Field Configuration

Sub-fields enable multiple indexing strategies on a single source field. A common pattern is a text field with a .raw keyword sub-field: the text field supports full-text search while the keyword sub-field supports exact filtering and sorting. Each sub-field specifies a name suffix, a search field type, and an optional analyser.

{
  "subFields": [
    {
      "name": "raw",
      "searchFieldType": "keyword"
    },
    {
      "name": "english",
      "searchFieldType": "text",
      "analyzer": "english"
    }
  ]
}

Drift Detection

The search drift detection service compares the design-time schema (derived from the graph model and active search profile) against a deployed index schema. The deployed schema is provided as JSON, for example from an Elasticsearch GET _mapping or Azure Cognitive Search GET index response.

Drift TypeSeverityDescription
field-removedErrorField exists in the design but is missing from the deployed index
field-addedInfoField exists in the deployed index but not in the design
type-changedWarningField type differs between design and deployment
analyzer-changedWarningField analyser differs between design and deployment
field-renamedAvailableField name change detected between design and deployment

The drift report summarises all discrepancies with total counts, grouped by severity (errors, warnings, informational). A clean report confirms the deployed index matches the design-time schema exactly.

Baseline Comparison
Compare the current search schema against a locked baseline to detect unintended changes before deployment.
Task Board Integration
Convert drift findings into task board cards with severity, affected fields, and remediation steps attached.
Structural Hash Tracking
A hash of the design-time schema changes when fields or types are modified. Pull request diffs show exactly what changed and when.

Search Validation

8 search-specific validation rules enforce consistency and correctness in the search index design.

Operational Configuration

Search profiles include operational settings that control how indexes are managed in production.

Change Tracking
Four strategies: high water mark, SQL integrated, full reindex, and custom. Configure the tracking field, ETag-based detection, and a structured schedule interval.
Deletion Strategy
Four approaches: soft delete, hard delete, archive, and tombstone. Specify the soft-delete field, deletion value, and tombstone retention duration.
Index Aliases
Alias patterns using variables ({indexName}, {version}, {date}, {environment}). Three swap strategies: blue-green, rolling, and manual. Configurable previous version retention.
Index Lifecycle
Automatic tier management with hot, warm, cold, and delete phases. Configure durations per tier, force-merge on warm transition, and rollover by size, document count, or age.

Data Views: Search Mode

Data Views in search mode (.data-view.json) provide an interactive graph-based visualisation of search index projections. Click any entity node to open the Entity Overlay, which shows the search field configuration with the following columns.

ColumnWidthContent
Key40pxY or - indicating the document key field
Field180pxResolved field name with naming convention applied
Type150pxResolved type with engine-specific type mapping applied
Searchable90pxYES or NO
Filterable85pxYES or NO
Sortable75pxYES or NO
Facetable85pxYES or NO
Retrievable95pxYES or NO
Analyzer130pxActive profile analyser override or base analyser
Boost60pxBoost value or -

A profile dropdown in the top bar switches the active search profile, and the Entity Overlay re-renders with the selected profile's naming conventions, type mappings, and analyser assignments. The overlay shows the full field-level configuration including field identity, query behaviours, text analysis, vector search, storage and performance, governance, and sub-fields.

Getting Started

To begin using the search system:

  1. Create a search profile in the project editor, selecting a target engine and configuring naming conventions and type mappings.
  2. Open a model entity in the graph editor and switch to the search lens.
  3. Include properties in the search projection by setting included: true and configuring behaviours, field type, and analyser.
  4. Create a Data View in search mode to visualise the index projection across multiple entities interactively.
  5. Use drift detection to compare the design-time schema against a deployed index.