R: Split a core

core_split {solrium} | R Documentation

## Split a core

### Description

SPLIT splits an index into two or more indexes. The index being split can continue to handle requests. The split pieces can be placed into a specified directory on the server's filesystem or it can be merged into running Solr cores.

### Usage

    core_split(conn, name, path = NULL, targetCore = NULL, ranges = NULL,
      split.key = NULL, async = NULL, raw = FALSE, callopts = list())

### Arguments

`conn` | A solrium connection object, see SolrClient
`name` | (character) The name of the core to be created. Required
`path` | (character) Two or more target directory paths in which a piece of the index will be written
`targetCore` | (character) Two or more target Solr cores to which a piece of the index will be merged
`ranges` | (character) A list of number ranges, or hash ranges in hexadecimal format. If numbers, they get converted to hexidecimal format before being passed to your Solr server.
`split.key` | (character) The key to be used for splitting the index
`async` | (character) Request ID to track this action which will be processed asynchronously
`raw` | (logical) If `TRUE`, returns raw data
`callopts` | curl options passed on to crul::HttpClient

### Details

The core index will be split into as many pieces as the number of `path` or `targetCore` parameters.

Either `path` or `targetCore` parameter must be specified but not both. The `ranges` and `split.key` parameters are optional and only one of the two should be specified, if at all required.

### Examples

    ## Not run:
    # start Solr with Schemaless mode via the schemaless eg: bin/solr start -e schemaless
    # you can create a new core like: bin/solr create -c corename
    # where <corename> is the name for your core - or creaate as below

    # connect
    (conn <- SolrClient$new())

    # Swap a core
    ## First, create two cores
    # conn$core_split("splitcoretest0") # or create in the CLI: bin/solr create -c splitcoretest0
    # conn$core_split("splitcoretest1") # or create in the CLI: bin/solr create -c splitcoretest1
    # conn$core_split("splitcoretest2") # or create in the CLI: bin/solr create -c splitcoretest2

    ## check status
    conn$core_status("splitcoretest0", FALSE)
    conn$core_status("splitcoretest1", FALSE)
    conn$core_status("splitcoretest2", FALSE)

    ## split core using targetCore parameter
    conn$core_split("splitcoretest0", targetCore = c("splitcoretest1", "splitcoretest2"))

    ## split core using split.key parameter
    ### Here all documents having the same route key as the split.key i.e. 'A!'
    ### will be split from the core index and written to the targetCore
    conn$core_split("splitcoretest0", targetCore = "splitcoretest1", split.key = "A!")

    ## split core using ranges parameter
    ### Solr expects hash ranges in hexidecimal, but since we're in R,
    ### let's not make our lives any harder, so you can pass in numbers
    ### but you can still pass in hexidecimal if you want.
    rgs <- c('0-1f4', '1f5-3e8')
    conn$core_split("splitcoretest0", targetCore = c("splitcoretest1", "splitcoretest2"), ranges = rgs)
    rgs <- list(c(0, 500), c(501, 1000))
    conn$core_split("splitcoretest0", targetCore = c("splitcoretest1", "splitcoretest2"), ranges = rgs)

    ## End(Not run)

[Package solrium version 1.0.0 Index]