Post Tool

Solr includes a simple command line tool for POSTing various types of content to a Solr server that is part of the bin/solr CLI.

This tool is meant for use by new users exploring Solr’s capabilities, and is not intended as a robust solution to be used for indexing documents into production systems.
You may be familiar with SimplePostTool and the bin/post Unix shell script. While this is still available, it is deprecated and will be removed in Solr 10.

To run it, open a window and enter:

$ bin/solr post -url http://localhost:8983/gettingstarted/update example/films/films.json

This will contact the server at localhost:8983. The -help (or simply -h) option will output information on its usage (i.e., bin/solr post -help).

Using the bin/solr post Tool

You must either specify url that is the full path to the update handler or provide a c collection/core name when using bin/solr post.

This specifies the same target collection: -url http://localhost:8983/gettingstarted/update or -c gettingstarted.

The basic usage of bin/solr post is:

$ bin/solr post -h
Usage: post -url http://localhost:8983/gettingstarted/update [OPTIONS] <files|directories|urls|-d ["...",...]>
    or post -help

  Solr options:
    -url <base Solr update URL>
    -commit issue a commit
    -u or -user <user:pass> (sets BasicAuth credentials)

  Web crawl options:
    -recursive <depth> (default: 1)
    -delay <seconds> (default: 10)

  Directory crawl options:
    -delay <seconds> (default: 0)

  stdin/args options:
    -type <content/type> (default: application/json)

  Other options:
    -filetypes <type>[,<type>,...] (default: xml,json,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log)
    -params "<key>=<value>[&<key>=<value>...]" (values must be URL-encoded; these pass through to Solr update request)
    -out output the Solr responses to console
    -format solr (sends application/json content as Solr commands to /update instead of /update/json/docs


* JSON file: bin/solr post -url http://localhost:8983/wizbang/update events.json
* XML files: bin/solr post -url http://localhost:8983/records/update article*.xml
* CSV file: bin/solr post -url http://localhost:8983/signals/update LATEST-signals.csv
* Directory of files: bin/solr post -filetypes xml,json,csv -url http://localhost:8983/myfiles/update ~/Documents
* Web crawl: bin/solr post -mode web -url http://localhost:8983/gettingstarted/update -recursive 1 -delay 1
* Standard input (stdin): echo '{commit: {}}' | bin/solr post -mode stdin -url http://localhost:8983/my_collection/update -out
* Data as string: bin/solr post -url http://localhost:8983/signals/update -mode args -type text/csv -out $'id,value\n1,0.47'

Examples Using bin/solr post

There are several ways to use bin/solr post. This section presents several examples.

Indexing XML

Add all documents with file extension .xml to the collection named gettingstarted.

bin/solr post -url http://localhost:8983/solr/gettingstarted/update *.xml

Add all documents with file extension .xml to the gettingstarted collection on Solr running on port 8984.

bin/solr post -url http://localhost:8984/solr/gettingstarted/update *.xml

Send XML arguments to delete a document from gettingstarted.

bin/solr post -url http://localhost:8983/solr/gettingstarted/update -mode args -type application/xml '<delete><id>42</id></delete>'

Indexing CSV and JSON

Index all CSV and JSON files into gettingstarted from current directory:

bin/solr post -c gettingstarted -filetypes json,csv .

Index a tab-separated file into gettingstarted:

bin/solr post -url http://localhost:8984/solr/signals/update -params "separator=%09" -type text/csv data.tsv

The content type (-type) parameter is required to treat the file as the proper type, otherwise it will be ignored and a WARNING logged as it does not know what type of content a .tsv file is. The CSV handler supports the separator parameter, and is passed through using the -params setting.

Indexing JSON

Index all JSON files into gettingstarted.

bin/solr post -url http://localhost:8983/solr/gettingstarted/update *.json

Indexing Rich Documents (PDF, Word, HTML, etc.)

Index a PDF file into gettingstarted.

bin/solr post -url http://localhost:8983/solr/gettingstarted/update a.pdf

Automatically detect content types in a folder, and recursively scan it for documents for indexing into gettingstarted.

bin/solr post -url http://localhost:8983/solr/gettingstarted/update afolder/

Automatically detect content types in a folder, but limit it to PPT and HTML files and index into gettingstarted.

bin/solr post -url http://localhost:8983/solr/gettingstarted/update -filetypes ppt,html afolder/

Indexing to a Password Protected Solr (Basic Auth)

Index a PDF as the user "solr" with password "SolrRocks":

bin/solr post -u solr:SolrRocks -url http://localhost:8983/solr/gettingstarted/update a.pdf