diff options
| author | ab <abdullah_ahmed@brown.edu> | 2019-07-01 15:40:55 -0400 |
|---|---|---|
| committer | ab <abdullah_ahmed@brown.edu> | 2019-07-01 15:40:55 -0400 |
| commit | 0fc7edd5f9bd1234f8de6e5b1c7b8f23668d784c (patch) | |
| tree | 2ddff97c032657fb86de37c3be2cf2d201980088 /solr-8.1.1/bin/post | |
| parent | 4f8b7cecea3ceed6861c38bde9ce03c9c46e2d09 (diff) | |
| parent | 6bd79baf2d9301304194d87667bb5c66c17e5298 (diff) | |
Merge branch 'monikasearch2' of https://github.com/browngraphicslab/Dash-Web into text_box_ab
Diffstat (limited to 'solr-8.1.1/bin/post')
| -rw-r--r-- | solr-8.1.1/bin/post | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/solr-8.1.1/bin/post b/solr-8.1.1/bin/post new file mode 100644 index 000000000..4c629d105 --- /dev/null +++ b/solr-8.1.1/bin/post @@ -0,0 +1,239 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# ====== Common code copied/adapted from bin/solr (TODO: centralize/share this kind of thing across bin/solr, etc) + +THIS_SCRIPT="$0" + +# Resolve symlinks to this script +while [ -h "$THIS_SCRIPT" ] ; do + ls=`ls -ld "$THIS_SCRIPT"` + # Drop everything prior to -> + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + THIS_SCRIPT="$link" + else + THIS_SCRIPT=`dirname "$THIS_SCRIPT"`/"$link" + fi +done + +SOLR_TIP=`dirname "$THIS_SCRIPT"`/.. +SOLR_TIP=`cd "$SOLR_TIP"; pwd` + +if [ -n "$SOLR_JAVA_HOME" ]; then + JAVA="$SOLR_JAVA_HOME/bin/java" +elif [ -n "$JAVA_HOME" ]; then + for java in "$JAVA_HOME"/bin/amd64/java "$JAVA_HOME"/bin/java; do + if [ -x "$java" ]; then + JAVA="$java" + break + fi + done +else + JAVA=java +fi + +# test that Java exists and is executable on this server +"$JAVA" -version >/dev/null 2>&1 || { echo >&2 "Java is required to run this tool! Please install Java 8 or greater before running this script."; exit 1; } + + +# ===== post specific code + +TOOL_JAR=("$SOLR_TIP/dist"/solr-core-*.jar) + +function print_usage() { + echo "" + echo 'Usage: post -c <collection> [OPTIONS] <files|directories|urls|-d ["...",...]>' + echo " or post -help" + echo "" + echo " collection name defaults to DEFAULT_SOLR_COLLECTION if not specified" + echo "" + echo "OPTIONS" + echo "=======" + echo " Solr options:" + echo " -url <base Solr update URL> (overrides collection, host, and port)" + echo " -host <host> (default: localhost)" + echo " -p or -port <port> (default: 8983)" + echo " -commit yes|no (default: yes)" + echo " -u or -user <user:pass> (sets BasicAuth credentials)" + # optimize intentionally omitted, but can be used as '-optimize yes' (default: no) + echo "" + echo " Web crawl options:" + echo " -recursive <depth> (default: 1)" + echo " -delay <seconds> (default: 10)" + echo "" + echo " Directory crawl options:" + echo " -delay <seconds> (default: 0)" + echo "" + echo " stdin/args options:" + echo " -type <content/type> (default: application/xml)" + echo "" + echo " Other options:" + echo " -filetypes <type>[,<type>,...] (default: xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log)" + echo " -params \"<key>=<value>[&<key>=<value>...]\" (values must be URL-encoded; these pass through to Solr update request)" + echo " -out yes|no (default: no; yes outputs Solr response to console)" + echo " -format solr (sends application/json content as Solr commands to /update instead of /update/json/docs)" + echo "" + echo "" + echo "Examples:" + echo "" + echo "* JSON file: $THIS_SCRIPT -c wizbang events.json" + echo "* XML files: $THIS_SCRIPT -c records article*.xml" + echo "* CSV file: $THIS_SCRIPT -c signals LATEST-signals.csv" + echo "* Directory of files: $THIS_SCRIPT -c myfiles ~/Documents" + echo "* Web crawl: $THIS_SCRIPT -c gettingstarted http://lucene.apache.org/solr -recursive 1 -delay 1" + echo "* Standard input (stdin): echo '{"commit": {}}' | $THIS_SCRIPT -c my_collection -type application/json -out yes -d" + echo "* Data as string: $THIS_SCRIPT -c signals -type text/csv -out yes -d $'id,value\n1,0.47'" + echo "" +} # end print_usage + +if [[ $# -eq 1 && ("$1" == "-help" || "$1" == "-h" || "$1" == "-usage") ]]; then + print_usage + exit +fi + + +COLLECTION="$DEFAULT_SOLR_COLLECTION" +PROPS=('-Dauto=yes') +RECURSIVE="" +FILES=() +URLS=() +ARGS=() + +while [ $# -gt 0 ]; do + # TODO: natively handle the optional parameters to SPT + # but for now they can be specified as bin/post -c collection-name delay=5 http://lucidworks.com + + if [[ -d "$1" ]]; then + # Directory +# echo "$1: DIRECTORY" + RECURSIVE=yes + FILES+=("$1") + elif [[ -f "$1" ]]; then + # File +# echo "$1: FILE" + FILES+=("$1") + elif [[ "$1" == http* ]]; then + # URL +# echo "$1: URL" + URLS+=("$1") + else + if [[ "$1" == -* ]]; then + if [[ "$1" == "-c" ]]; then + # Special case, pull out collection name + shift + COLLECTION="$1" + elif [[ "$1" == "-p" ]]; then + # -p alias for -port for convenience and compatibility with `bin/solr start` + shift + PROPS+=("-Dport=$1") + elif [[ ("$1" == "-d" || "$1" == "--data" || "$1" == "-") ]]; then + if [[ ! -t 0 ]]; then + MODE="stdin" + else + # when no stdin exists and -d specified, the rest of the arguments + # are assumed to be strings to post as-is + MODE="args" + shift + if [[ $# -gt 0 ]]; then + ARGS=("$@") + shift $# + else + # SPT needs a valid args string, useful for 'bin/post -c foo -d' to force a commit + ARGS+=("<add/>") + fi + fi + elif [[ ("$1" == "-u" || "$1" == "-user") ]]; then + shift + PROPS+=("-Dbasicauth=$1") + else + if [[ "$1" == -D* ]] ; then + PROPS+=("$1") + if [[ "${1:2:4}" == "url=" ]]; then + SOLR_URL=${1:6} + fi + else + key="${1:1}" + shift + # echo "$1: PROP" + PROPS+=("-D$key=$1") + if [[ "$key" == "url" ]]; then + SOLR_URL=$1 + fi + fi + fi + else + echo -e "\nUnrecognized argument: $1\n" + echo -e "If this was intended to be a data file, it does not exist relative to $PWD\n" + exit 1 + fi + fi + shift +done + +# Check for errors +if [[ $COLLECTION == "" && $SOLR_URL == "" ]]; then + echo -e "\nCollection or URL must be specified. Use -c <collection name> or set DEFAULT_SOLR_COLLECTION in your environment, or use -url instead.\n" + echo -e "See '$THIS_SCRIPT -h' for usage instructions.\n" + exit 1 +fi + +# Unsupported: bin/post -c foo +if [[ ${#FILES[@]} == 0 && ${#URLS[@]} == 0 && $MODE != "stdin" && $MODE != "args" ]]; then + echo -e "\nNo files, directories, URLs, -d strings, or stdin were specified.\n" + echo -e "See '$THIS_SCRIPT -h' for usage instructions.\n" + exit 1 +fi + +# SPT does not support mixing different data mode types, just files, just URLs, just stdin, or just argument strings. +# The following are unsupported constructs: +# bin/post -c foo existing_file.csv http://example.com +# echo '<xml.../>' | bin/post -c foo existing_file.csv +# bin/post -c foo existing_file.csv -d 'anything' +if [[ (${#FILES[@]} != 0 && ${#URLS[@]} != 0 && $MODE != "stdin" && $MODE != "args") + || ((${#FILES[@]} != 0 || ${#URLS[@]} != 0) && ($MODE == "stdin" || $MODE == "args")) ]]; then + echo -e "\nCombining files/directories, URLs, stdin, or args is not supported. Post them separately.\n" + exit 1 +fi + +PARAMS="" + +# TODO: let's simplify this +if [[ $MODE != "stdin" && $MODE != "args" ]]; then + if [[ $FILES != "" ]]; then + MODE="files" + PARAMS=("${FILES[@]}") + fi + + if [[ $URLS != "" ]]; then + MODE="web" + PARAMS=("${URLS[@]}") + fi +else + PARAMS=("${ARGS[@]}") +fi + +PROPS+=("-Dc=$COLLECTION" "-Ddata=$MODE") +if [[ -n "$RECURSIVE" ]]; then + PROPS+=('-Drecursive=yes') +fi + +echo "$JAVA" -classpath "${TOOL_JAR[0]}" "${PROPS[@]}" org.apache.solr.util.SimplePostTool "${PARAMS[@]}" +"$JAVA" -classpath "${TOOL_JAR[0]}" "${PROPS[@]}" org.apache.solr.util.SimplePostTool "${PARAMS[@]}" + +# post smoker: +# bin/post -c signals -out yes -type application/json -d '[{"id": 2, "val": 0.47}]' +# bin/post -c signals -out yes -params "wt=json" -d '<add><doc><field name="id">1</field></doc></add>' |
