Enable Remote Streaming in Tika Extract with Opensolr

Tika

Remote streaming lets Solr fetch a file from a URL and extract its text, instead of you uploading the bytes. Two settings have to be present, and the second one is the one everybody misses.

Remote streaming is disabled by default on Opensolr. Contact us, or write to support@opensolr.com, to have it enabled for your index. Everything below applies to any index, not only to Drupal.

01 · The symptom

You are indexing remote PDFs with stream.url and Solr answers:

Remote Streaming is disabled.

even though enableRemoteStreaming="true" is already set inside <requestDispatcher>. That setting is required, but on its own it is not sufficient.

02 · Both settings must exist

In solrconfig.xml, inside <requestDispatcher>:

<requestDispatcher handleSelect="true">
  <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048000" />
</requestDispatcher>

And inside the extraction handler itself:

<requestHandler name="/update/extract" class="solr.extraction.ExtractingRequestHandler">
  <lst name="initParams">
    <bool name="allowRemoteStreaming">true</bool>
  </lst>
</requestHandler>

This second block is the part that is usually forgotten. Without it Solr rejects every stream.url request with the error above, and says nothing about why.

03 · Upload, reload, test

Upload the configuration

Edit the files in the Opensolr config editor, or upload the whole config set as a zip from your index control panel.

Reload the index

Open your index in the control panel and use Reload Core in the Tools menu. Nothing changes until the reload.

Send one request

A 200 response, and no Remote Streaming is disabled error, means it is working.

curl "https://YOUR_HOSTNAME.opensolr.com/solr/YOUR_INDEX_NAME/update/extract?stream.url=https://example.com/sample.pdf&literal.id=test-doc&commit=true"

04 · Related reading

Solr reference guide: indexing with Tika

The extraction handler, its parameters and the metadata it produces.

Tika extraction is failing

If the error is about extraction itself rather than about streaming, start there.