Skip to content

Numeric fields

Numeric fields int, float, long, double, bool are supported. The bool field is more an API syntax sugar and is built on top of an internal int field.

Numeric fields can be filtered, sorted by and aggregated.

Single-value numeric fields

Example field schema for a numeric field year:

schema:
  movies:
    fields:
      title:
        type: text
        search: false
      year:
        type: int       # there can be single year
        filter: true    # field is filterable, default false
        facet: true     # field is facetable, default false
        store: true     # field is stored, default true
        sort: true     # field is sortable, default false

Numeric list fields

Nixiesearch also supports array/list variants of numeric fields: int[], long[], float[], double[]. These allow storing multiple numeric values for a single field.

schema:
  products:
    fields:
      title:
        type: text
      ratings:
        type: int[]     # array of user ratings
        filter: true    # enable range filtering on ratings
      sizes:
        type: float[]   # available product sizes
        filter: true
        store: true
      dimensions:
        type: double[]  # product dimensions [length, width, height]
        store: true

JSON document format

When indexing documents with numeric list fields, use standard JSON arrays:

{
  "title": "Wireless Headphones",
  "ratings": [5, 4, 5, 3, 4, 5],
  "sizes": [6.5, 7.0, 7.5, 8.0, 8.5],
  "dimensions": [15.2, 18.5, 7.3]
}

Use cases

Numeric list fields are ideal for:

  • Product attributes: Multiple sizes, available ratings, variant prices
  • Multi-dimensional data: Product dimensions, feature vectors
  • Category scores: Relevance scores across different categories
  • Multiple values: Any case where a document has multiple numeric values for the same attribute

Configuration options

Field Type Single Array Description
int int int[] 32-bit integers
long long long[] 64-bit integers
float float float[] 32-bit floating point
double double double[] 64-bit floating point

All numeric list fields support: - store: true/false - whether to store the original values (default: true) - filter: true/false - whether the field can be filtered (default: false) - required: true/false - whether the field is required (default: false)

Note: Numeric array fields (int[], long[], float[], double[]) do not support sorting operations. Only single-value numeric fields can be sorted.

Search behavior

Numeric fields cannot be searched in the sense of full text search as text fields do, but you can filter over them.

For numeric list fields, filtering operations check if any element in the array matches the criteria. For example, filtering ratings >= 4 on [5, 4, 5, 3, 4, 5] would match because several elements are >= 4.

By default all numeric fields are only stored, for filter, sort and facet support you need to explicitly toggle the corresponding flag.