Document Fields for Data Ingestion

Four required fields, the optional ones, and your own

Every document you push is one JSON object. Four fields are required; the optional ones make your results richer; and you can add fields of your own for filters and sorting.

Required fields

FieldWhat to send
uriThe web address of the document: a full http:// or https:// URL. It is the document's identity: the same uri always means the same document. A trailing slash is removed.
titleThe title, shown as the heading of the result.
descriptionA short summary, shown under the title.
textThe full text, as plain text (no HTML). Not needed when you send a file with "rtf": true: the text is read from the file (Files and documents).
You do not choose the id

Opensolr makes each document's id from its uri (the MD5 of the address). An id you send is ignored. Because the same address always gives the same id, sending a document again replaces it instead of adding a copy (Update and remove documents). The ids come back in doc_ids when you push.

Optional fields

FieldWhat it does
timestampThe date of the content: Unix time (1741392000) or a date such as 2026-03-08 14:00:00. Date filters and fresh results use it.
og_imageThe address of a picture shown with the result.
meta_iconThe address of your site's icon.
authorThe author's name.
categoryA category name, usable as a filter.
content_typeThe type of the document. When you send none, it is read from the file for a file, and is text/html otherwise. A text/... type shows on the Web tab of the hosted search page, any other type (a PDF, a Word file) on the Documents tab (Web and Documents tabs).
meta_detected_languageThe two-letter language code: en, de, fr. Without it, or with a code that is not a language, Opensolr detects the language from the title and description, and leaves it empty when unsure.
meta_og_localeLanguage and country, such as en_gb or es_ar (en-GB works too). A value without a real country is dropped. Without it, a locale in the address, such as /es-ar/, is used.
meta_domainThe domain of your site; taken from uri when you send none.
price_f, currency_sA price and its currency code (USD, EUR): shown on the result, used by the price filter and price sorting.
text_tA cleaner version of the text, for example from your structured data. When you send it, the meaning vector is made from it instead of text.

Opensolr adds the rest itself: meaning vectors, sentiment, the detected language and the fields search needs (What Opensolr adds to every document). Every field of the index: Core fields.

Your own fields

Add any field whose name ends with a type suffix of the Opensolr schema, and it is stored exactly as you send it, ready for filters, facets and sorting. No setup needed.

{
  "uri": "https://example.com/handbook/deploy",
  "title": "Deployment runbook",
  "description": "How a release goes to production.",
  "text": "1. Check that every test passed. 2. Tag the release ...",
  "department_s": "Engineering",
  "tags_sm": ["release", "production"],
  "priority_i": 1,
  "rating_f": 4.5,
  "reviewed_dt": "2026-09-20T00:00:00Z",
  "public_b": false,
  "notes_t": "Searchable notes, not a filter"
}

Every suffix and what it allows (filter, facet, sort, full-text search): Dynamic fields. A field whose name matches nothing in the schema is refused by your index: the job then reports those documents as failed, with the reason.

Push your data pages

Back to Enterprise Site Search