Class SolrCLI

  • All Implemented Interfaces:
    CLIO

    public class SolrCLI
    extends Object
    implements CLIO
    Command-line utility for working with Solr.
    • Field Detail

      • RED

        public static String RED
      • GREEN

        public static String GREEN
      • YELLOW

        public static String YELLOW
      • OPTION_ZKHOST_DEPRECATED

        public static final org.apache.commons.cli.Option OPTION_ZKHOST_DEPRECATED
      • OPTION_ZKHOST

        public static final org.apache.commons.cli.Option OPTION_ZKHOST
      • OPTION_SOLRURL_DEPRECATED

        public static final org.apache.commons.cli.Option OPTION_SOLRURL_DEPRECATED
      • OPTION_SOLRURL

        public static final org.apache.commons.cli.Option OPTION_SOLRURL
      • OPTION_VERBOSE

        public static final org.apache.commons.cli.Option OPTION_VERBOSE
      • OPTION_HELP

        public static final org.apache.commons.cli.Option OPTION_HELP
      • OPTION_RECURSE

        public static final org.apache.commons.cli.Option OPTION_RECURSE
      • OPTION_CREDENTIALS

        public static final org.apache.commons.cli.Option OPTION_CREDENTIALS
      • OPTION_CREDENTIALS_DEPRECATED

        public static final org.apache.commons.cli.Option OPTION_CREDENTIALS_DEPRECATED
    • Constructor Detail

      • SolrCLI

        public SolrCLI()
    • Method Detail

      • exit

        public static void exit​(int exitStatus)
      • parseCmdLine

        public static org.apache.commons.cli.CommandLine parseCmdLine​(Tool tool,
                                                                      String[] args)
      • getDefaultSolrUrl

        public static String getDefaultSolrUrl()
      • checkSslStoreSysProp

        protected static void checkSslStoreSysProp​(String solrInstallDir,
                                                   String key)
      • raiseLogLevelUnlessVerbose

        public static void raiseLogLevelUnlessVerbose​(org.apache.commons.cli.CommandLine cli)
      • getToolOptions

        public static org.apache.commons.cli.Options getToolOptions​(Tool tool)
        Returns tool options for given tool, for usage display purposes. Hides deprecated options.
      • getOptionWithDeprecatedAndDefault

        public static String getOptionWithDeprecatedAndDefault​(org.apache.commons.cli.CommandLine cli,
                                                               String opt,
                                                               String deprecated,
                                                               String def)
        Returns the value of the option with the given name, or the value of the deprecated option with
      • processCommandLineArgs

        public static org.apache.commons.cli.CommandLine processCommandLineArgs​(Tool tool,
                                                                                String[] args)
        Parses the command-line arguments passed by the user.
      • checkCommunicationError

        public static boolean checkCommunicationError​(Exception exc)
        Determine if a request to Solr failed due to a communication error, which is generally retry-able.
      • checkCodeForAuthError

        public static void checkCodeForAuthError​(int code)
      • exceptionIsAuthRelated

        public static boolean exceptionIsAuthRelated​(Exception exc)
      • getSolrClient

        public static org.apache.solr.client.solrj.SolrClient getSolrClient​(String solrUrl)
        Get a SolrClient for the given URL. The URL can be with or without /solr suffix, the method will normalize it and add '/solr'. To support certain unit tests, the hostContext can be overridden via the system property 'hostContext'.

        Note that from Solr 10.0 Solr will use / as base URL to support /api and other contexts, so handling of hostContext differs between Solr 9.x and 10.x.

        Parameters:
        solrUrl - the base URL of Solr
        Returns:
        a SolrClient initialized with correct hostContext, default '/solr'
      • getSolrClient

        public static org.apache.solr.client.solrj.SolrClient getSolrClient​(org.apache.commons.cli.CommandLine cli)
                                                                     throws Exception
        Throws:
        Exception
      • postJsonToSolr

        public static org.apache.solr.common.util.NamedList<Object> postJsonToSolr​(org.apache.solr.client.solrj.SolrClient solrClient,
                                                                                   String updatePath,
                                                                                   String jsonBody)
                                                                            throws Exception
        Throws:
        Exception
      • uptime

        public static String uptime​(long uptimeMs)
      • normalizeSolrUrl

        public static String normalizeSolrUrl​(String solrUrl,
                                              boolean logUrlFormatWarning)
      • normalizeSolrUrl

        public static String normalizeSolrUrl​(String solrUrl,
                                              boolean logUrlFormatWarning,
                                              String hostContext)
        Strips off the end of solrUrl any hostContext when a legacy solrUrl like http://localhost:8983/solr is used, and optionally logs a warning. In the future we'll have urls ending with /api as well.
        Parameters:
        solrUrl - The user supplied url to Solr.
        logUrlFormatWarning - If a warning message should be logged about the url format
        hostContext - context path for Solr, is normally '/solr' but can be overridden here. Should not end with '/'
        Returns:
        the solrUrl in the format that Solr expects to see internally.
      • normalizeSolrUrl

        public static String normalizeSolrUrl​(org.apache.commons.cli.CommandLine cli)
                                       throws Exception
        Get the base URL of a live Solr instance from either the --solr-url command-line option or from ZooKeeper.
        Throws:
        Exception
      • getZkHost

        public static String getZkHost​(org.apache.commons.cli.CommandLine cli)
                                throws Exception
        Get the ZooKeeper connection string from either the zk-host command-line option or by looking it up from a running Solr instance based on the solr-url option.
        Throws:
        Exception
      • getSolrZkClient

        public static org.apache.solr.common.cloud.SolrZkClient getSolrZkClient​(org.apache.commons.cli.CommandLine cli,
                                                                                String zkHost)
      • getCloudHttp2SolrClient

        public static org.apache.solr.client.solrj.impl.CloudHttp2SolrClient getCloudHttp2SolrClient​(String zkHost)
      • getCloudHttp2SolrClient

        public static org.apache.solr.client.solrj.impl.CloudHttp2SolrClient getCloudHttp2SolrClient​(String zkHost,
                                                                                                     org.apache.solr.client.solrj.impl.Http2SolrClient.Builder builder)
      • safeCheckCollectionExists

        public static boolean safeCheckCollectionExists​(String solrUrl,
                                                        String collection)
      • safeCheckCoreExists

        public static boolean safeCheckCoreExists​(String solrUrl,
                                                  String coreName)
      • isCloudMode

        public static boolean isCloudMode​(org.apache.solr.client.solrj.SolrClient solrClient)
                                   throws org.apache.solr.client.solrj.SolrServerException,
                                          IOException
        Throws:
        org.apache.solr.client.solrj.SolrServerException
        IOException
      • getConfigSetsDir

        public static Path getConfigSetsDir​(Path solrInstallDir)
      • print

        public static void print​(Object message)
      • printGreen

        public static void printGreen​(Object message)
        Console print using green color
      • printRed

        public static void printRed​(Object message)
        Console print using red color
      • print

        public static void print​(String color,
                                 Object message)