From 493af043d34d000e4a0031e1b0c4e7c2c5f56c17 Mon Sep 17 00:00:00 2001
From: Lukasz Jagiello <jagiello.lukasz@gmail.com>
Date: Tue, 7 Nov 2017 16:44:09 -0800
Subject: [PATCH] Add Solr input plugin (#2019)

---
 README.md                            |    1 +
 etc/telegraf.conf                    |    9 +
 plugins/inputs/all/all.go            |    1 +
 plugins/inputs/solr/README.md        |   31 +
 plugins/inputs/solr/solr.go          |  442 +++++++
 plugins/inputs/solr/solr_test.go     |   62 +
 plugins/inputs/solr/testdata_test.go | 1824 ++++++++++++++++++++++++++
 7 files changed, 2370 insertions(+)
 create mode 100644 plugins/inputs/solr/README.md
 create mode 100644 plugins/inputs/solr/solr.go
 create mode 100644 plugins/inputs/solr/solr_test.go
 create mode 100644 plugins/inputs/solr/testdata_test.go

diff --git a/README.md b/README.md
index 0f0f85ba..a5c6f08e 100644
--- a/README.md
+++ b/README.md
@@ -195,6 +195,7 @@ configuration options.
 * [smart](./plugins/inputs/smart)
 * [snmp](./plugins/inputs/snmp)
 * [snmp_legacy](./plugins/inputs/snmp_legacy)
+* [solr](./plugins/inputs/solr)
 * [sql server](./plugins/inputs/sqlserver) (microsoft)
 * [teamspeak](./plugins/inputs/teamspeak)
 * [tomcat](./plugins/inputs/tomcat)
diff --git a/etc/telegraf.conf b/etc/telegraf.conf
index f3128b8f..63ce2ebf 100644
--- a/etc/telegraf.conf
+++ b/etc/telegraf.conf
@@ -2329,6 +2329,15 @@
 #     sub_tables=[".1.3.6.1.2.1.2.2.1.13", "bytes_recv", "bytes_send"]
 
 
+# # Read metrics from Solr Server
+# [[inputs.solr]]
+#   ## specify a list of one or more Solr servers
+#   servers = ["http://localhost:8983"]
+#   ##
+#   ## specify a list of one or more Solr cores (default - all)
+#   # cores = ["main"]
+
+
 # # Read metrics from Microsoft SQL Server
 # [[inputs.sqlserver]]
 #   ## Specify instances to monitor with a list of connection strings.
diff --git a/plugins/inputs/all/all.go b/plugins/inputs/all/all.go
index 235169c8..421fd113 100644
--- a/plugins/inputs/all/all.go
+++ b/plugins/inputs/all/all.go
@@ -80,6 +80,7 @@ import (
 	_ "github.com/influxdata/telegraf/plugins/inputs/snmp"
 	_ "github.com/influxdata/telegraf/plugins/inputs/snmp_legacy"
 	_ "github.com/influxdata/telegraf/plugins/inputs/socket_listener"
+	_ "github.com/influxdata/telegraf/plugins/inputs/solr"
 	_ "github.com/influxdata/telegraf/plugins/inputs/sqlserver"
 	_ "github.com/influxdata/telegraf/plugins/inputs/statsd"
 	_ "github.com/influxdata/telegraf/plugins/inputs/sysstat"
diff --git a/plugins/inputs/solr/README.md b/plugins/inputs/solr/README.md
new file mode 100644
index 00000000..214ed4f7
--- /dev/null
+++ b/plugins/inputs/solr/README.md
@@ -0,0 +1,31 @@
+# Solr input plugin
+
+The [solr](http://lucene.apache.org/solr/) plugin collects stats via the
+[MBean Request Handler](https://cwiki.apache.org/confluence/display/solr/MBean+Request+Handler)
+
+More about [performance statistics](https://cwiki.apache.org/confluence/display/solr/Performance+Statistics+Reference)
+
+### Configuration:
+
+```
+[[inputs.solr]]
+  ## specify a list of one or more Solr servers
+  servers = ["http://localhost:8983"]
+  ##
+  ## specify a list of one or more Solr cores (default - all)
+  # cores = ["main"]
+```
+
+### Example output of gathered metrics:
+
+```
+➜  ~ telegraf -config telegraf.conf -input-filter solr -test
+* Plugin: solr, Collection 1
+> solr_core,core=main,handler=searcher,host=testhost deleted_docs=17616645i,max_docs=261848363i,num_docs=244231718i 1478214949000000000
+> solr_core,core=main,handler=core,host=testhost deleted_docs=0i,max_docs=0i,num_docs=0i 1478214949000000000
+> solr_queryhandler,core=main,handler=/replication,host=testhost 15min_rate_reqs_per_second=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000444659081257,5min_rate_reqs_per_second=0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014821969375,75th_pc_request_time=16.484211,95th_pc_request_time=16.484211,999th_pc_request_time=16.484211,99th_pc_request_time=16.484211,avg_requests_per_second=0.0000008443809966322143,avg_time_per_request=12.984811,errors=0i,handler_start=1474662050865i,median_request_time=11.352427,requests=3i,timeouts=0i,total_time=38.954433 1478214949000000000
+> solr_queryhandler,core=main,handler=/update/extract,host=testhost 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0 1478214949000000000
+> solr_queryhandler,core=main,handler=org.apache.solr.handler.component.SearchHandler,host=testhost 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1474662050861i,median_request_time=0,requests=0i,timeouts=0i,total_time=0 1478214949000000000
+> solr_queryhandler,core=main,handler=/tvrh,host=testhost 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0 1478214949000000000
+[…]
+```
diff --git a/plugins/inputs/solr/solr.go b/plugins/inputs/solr/solr.go
new file mode 100644
index 00000000..1df8fa4c
--- /dev/null
+++ b/plugins/inputs/solr/solr.go
@@ -0,0 +1,442 @@
+package solr
+
+import (
+	"encoding/json"
+	"fmt"
+	"net/http"
+	"strconv"
+	"strings"
+	"sync"
+	"time"
+
+	"github.com/influxdata/telegraf"
+	"github.com/influxdata/telegraf/internal"
+	"github.com/influxdata/telegraf/plugins/inputs"
+)
+
+const mbeansPath = "/admin/mbeans?stats=true&wt=json&cat=CORE&cat=QUERYHANDLER&cat=UPDATEHANDLER&cat=CACHE"
+const adminCoresPath = "/solr/admin/cores?action=STATUS&wt=json"
+
+type node struct {
+	Host string `json:"host"`
+}
+
+const sampleConfig = `
+  ## specify a list of one or more Solr servers
+  servers = ["http://localhost:8983"]
+
+  ## specify a list of one or more Solr cores (default - all)
+  # cores = ["main"]
+`
+
+// Solr is a plugin to read stats from one or many Solr servers
+type Solr struct {
+	Local       bool
+	Servers     []string
+	HTTPTimeout internal.Duration
+	Cores       []string
+	client      *http.Client
+}
+
+// AdminCoresStatus is an exported type that
+// contains a response with information about Solr cores.
+type AdminCoresStatus struct {
+	Status map[string]struct {
+		Index struct {
+			SizeInBytes int64 `json:"sizeInBytes"`
+			NumDocs     int64 `json:"numDocs"`
+			MaxDoc      int64 `json:"maxDoc"`
+			DeletedDocs int64 `json:"deletedDocs"`
+		} `json:"index"`
+	} `json:"status"`
+}
+
+// MBeansData is an exported type that
+// contains a response from Solr with metrics
+type MBeansData struct {
+	Headers    ResponseHeader    `json:"responseHeader"`
+	SolrMbeans []json.RawMessage `json:"solr-mbeans"`
+}
+
+// ResponseHeader is an exported type that
+// contains a response metrics: QTime and Status
+type ResponseHeader struct {
+	QTime  int64 `json:"QTime"`
+	Status int64 `json:"status"`
+}
+
+// Core is an exported type that
+// contains Core metrics
+type Core struct {
+	Stats struct {
+		DeletedDocs int64 `json:"deletedDocs"`
+		MaxDoc      int64 `json:"maxDoc"`
+		NumDocs     int64 `json:"numDocs"`
+	} `json:"stats"`
+}
+
+// QueryHandler is an exported type that
+// contains query handler metrics
+type QueryHandler struct {
+	Stats struct {
+		One5minRateReqsPerSecond float64 `json:"15minRateReqsPerSecond"`
+		FiveMinRateReqsPerSecond float64 `json:"5minRateReqsPerSecond"`
+		Seven5thPcRequestTime    float64 `json:"75thPcRequestTime"`
+		Nine5thPcRequestTime     float64 `json:"95thPcRequestTime"`
+		Nine99thPcRequestTime    float64 `json:"999thPcRequestTime"`
+		Nine9thPcRequestTime     float64 `json:"99thPcRequestTime"`
+		AvgRequestsPerSecond     float64 `json:"avgRequestsPerSecond"`
+		AvgTimePerRequest        float64 `json:"avgTimePerRequest"`
+		Errors                   int64   `json:"errors"`
+		HandlerStart             int64   `json:"handlerStart"`
+		MedianRequestTime        float64 `json:"medianRequestTime"`
+		Requests                 int64   `json:"requests"`
+		Timeouts                 int64   `json:"timeouts"`
+		TotalTime                float64 `json:"totalTime"`
+	} `json:"stats"`
+}
+
+// UpdateHandler is an exported type that
+// contains update handler metrics
+type UpdateHandler struct {
+	Stats struct {
+		Adds                     int64  `json:"adds"`
+		AutocommitMaxDocs        int64  `json:"autocommit maxDocs"`
+		AutocommitMaxTime        string `json:"autocommit maxTime"`
+		Autocommits              int64  `json:"autocommits"`
+		Commits                  int64  `json:"commits"`
+		CumulativeAdds           int64  `json:"cumulative_adds"`
+		CumulativeDeletesByID    int64  `json:"cumulative_deletesById"`
+		CumulativeDeletesByQuery int64  `json:"cumulative_deletesByQuery"`
+		CumulativeErrors         int64  `json:"cumulative_errors"`
+		DeletesByID              int64  `json:"deletesById"`
+		DeletesByQuery           int64  `json:"deletesByQuery"`
+		DocsPending              int64  `json:"docsPending"`
+		Errors                   int64  `json:"errors"`
+		ExpungeDeletes           int64  `json:"expungeDeletes"`
+		Optimizes                int64  `json:"optimizes"`
+		Rollbacks                int64  `json:"rollbacks"`
+		SoftAutocommits          int64  `json:"soft autocommits"`
+	} `json:"stats"`
+}
+
+// Hitratio is an helper interface
+// so we can later on convert it to float64
+type Hitratio interface{}
+
+// Cache is an exported type that
+// contains cache metrics
+type Cache struct {
+	Stats struct {
+		CumulativeEvictions int64    `json:"cumulative_evictions"`
+		CumulativeHitratio  Hitratio `json:"cumulative_hitratio"`
+		CumulativeHits      int64    `json:"cumulative_hits"`
+		CumulativeInserts   int64    `json:"cumulative_inserts"`
+		CumulativeLookups   int64    `json:"cumulative_lookups"`
+		Evictions           int64    `json:"evictions"`
+		Hitratio            Hitratio `json:"hitratio"`
+		Hits                int64    `json:"hits"`
+		Inserts             int64    `json:"inserts"`
+		Lookups             int64    `json:"lookups"`
+		Size                int64    `json:"size"`
+		WarmupTime          int64    `json:"warmupTime"`
+	} `json:"stats"`
+}
+
+// NewSolr return a new instance of Solr
+func NewSolr() *Solr {
+	return &Solr{
+		HTTPTimeout: internal.Duration{Duration: time.Second * 5},
+	}
+}
+
+// SampleConfig returns sample configuration for this plugin.
+func (s *Solr) SampleConfig() string {
+	return sampleConfig
+}
+
+// Description returns the plugin description.
+func (s *Solr) Description() string {
+	return "Read stats from one or more Solr servers or cores"
+}
+
+// Gather reads the stats from Solr and writes it to the
+// Accumulator.
+func (s *Solr) Gather(acc telegraf.Accumulator) error {
+	if s.client == nil {
+		client := s.createHTTPClient()
+		s.client = client
+	}
+
+	var wg sync.WaitGroup
+	wg.Add(len(s.Servers))
+
+	for _, serv := range s.Servers {
+		go func(serv string, acc telegraf.Accumulator) {
+			defer wg.Done()
+			acc.AddError(s.gatherServerMetrics(serv, acc))
+		}(serv, acc)
+	}
+	wg.Wait()
+	return nil
+}
+
+// Gather all metrics from server
+func (s *Solr) gatherServerMetrics(server string, acc telegraf.Accumulator) error {
+	measurementTime := time.Now()
+	adminCoresStatus := &AdminCoresStatus{}
+	if err := s.gatherData(s.adminURL(server), adminCoresStatus); err != nil {
+		return err
+	}
+	addAdminCoresStatusToAcc(acc, adminCoresStatus, measurementTime)
+	cores := s.filterCores(getCoresFromStatus(adminCoresStatus))
+	var wg sync.WaitGroup
+	wg.Add(len(cores))
+	for _, core := range cores {
+		go func(server string, core string, acc telegraf.Accumulator) {
+			defer wg.Done()
+			mBeansData := &MBeansData{}
+			acc.AddError(s.gatherData(s.mbeansURL(server, core), mBeansData))
+			acc.AddError(addCoreMetricsToAcc(acc, core, mBeansData, measurementTime))
+			acc.AddError(addQueryHandlerMetricsToAcc(acc, core, mBeansData, measurementTime))
+			acc.AddError(addUpdateHandlerMetricsToAcc(acc, core, mBeansData, measurementTime))
+			acc.AddError(addCacheMetricsToAcc(acc, core, mBeansData, measurementTime))
+		}(server, core, acc)
+	}
+	wg.Wait()
+	return nil
+}
+
+// Use cores from configuration if exists, else use cores from server
+func (s *Solr) filterCores(serverCores []string) []string {
+	if len(s.Cores) == 0 {
+		return serverCores
+	}
+	return s.Cores
+}
+
+// Return list of cores from solr server
+func getCoresFromStatus(adminCoresStatus *AdminCoresStatus) []string {
+	serverCores := []string{}
+	for coreName := range adminCoresStatus.Status {
+		serverCores = append(serverCores, coreName)
+	}
+	return serverCores
+}
+
+// Add core metrics from admin to accumulator
+// This is the only point where size_in_bytes is available (as far as I checked)
+func addAdminCoresStatusToAcc(acc telegraf.Accumulator, adminCoreStatus *AdminCoresStatus, time time.Time) {
+	for core, metrics := range adminCoreStatus.Status {
+		coreFields := map[string]interface{}{
+			"deleted_docs":  metrics.Index.DeletedDocs,
+			"max_docs":      metrics.Index.MaxDoc,
+			"num_docs":      metrics.Index.NumDocs,
+			"size_in_bytes": metrics.Index.SizeInBytes,
+		}
+		acc.AddFields(
+			"solr_admin",
+			coreFields,
+			map[string]string{"core": core},
+			time,
+		)
+	}
+}
+
+// Add core metrics section to accumulator
+func addCoreMetricsToAcc(acc telegraf.Accumulator, core string, mBeansData *MBeansData, time time.Time) error {
+	var coreMetrics map[string]Core
+	if err := json.Unmarshal(mBeansData.SolrMbeans[1], &coreMetrics); err != nil {
+		return err
+	}
+	for name, metrics := range coreMetrics {
+		if strings.Contains(name, "@") {
+			continue
+		}
+		coreFields := map[string]interface{}{
+			"deleted_docs": metrics.Stats.DeletedDocs,
+			"max_docs":     metrics.Stats.MaxDoc,
+			"num_docs":     metrics.Stats.NumDocs,
+		}
+		acc.AddFields(
+			"solr_core",
+			coreFields,
+			map[string]string{
+				"core":    core,
+				"handler": name},
+			time,
+		)
+	}
+	return nil
+}
+
+// Add query metrics section to accumulator
+func addQueryHandlerMetricsToAcc(acc telegraf.Accumulator, core string, mBeansData *MBeansData, time time.Time) error {
+	var queryMetrics map[string]QueryHandler
+
+	if err := json.Unmarshal(mBeansData.SolrMbeans[3], &queryMetrics); err != nil {
+		return err
+	}
+	for name, metrics := range queryMetrics {
+		coreFields := map[string]interface{}{
+			"15min_rate_reqs_per_second": metrics.Stats.One5minRateReqsPerSecond,
+			"5min_rate_reqs_per_second":  metrics.Stats.FiveMinRateReqsPerSecond,
+			"75th_pc_request_time":       metrics.Stats.Seven5thPcRequestTime,
+			"95th_pc_request_time":       metrics.Stats.Nine5thPcRequestTime,
+			"999th_pc_request_time":      metrics.Stats.Nine99thPcRequestTime,
+			"99th_pc_request_time":       metrics.Stats.Nine9thPcRequestTime,
+			"avg_requests_per_second":    metrics.Stats.AvgRequestsPerSecond,
+			"avg_time_per_request":       metrics.Stats.AvgTimePerRequest,
+			"errors":                     metrics.Stats.Errors,
+			"handler_start":              metrics.Stats.HandlerStart,
+			"median_request_time":        metrics.Stats.MedianRequestTime,
+			"requests":                   metrics.Stats.Requests,
+			"timeouts":                   metrics.Stats.Timeouts,
+			"total_time":                 metrics.Stats.TotalTime,
+		}
+		acc.AddFields(
+			"solr_queryhandler",
+			coreFields,
+			map[string]string{
+				"core":    core,
+				"handler": name},
+			time,
+		)
+	}
+	return nil
+}
+
+// Add update metrics section to accumulator
+func addUpdateHandlerMetricsToAcc(acc telegraf.Accumulator, core string, mBeansData *MBeansData, time time.Time) error {
+	var updateMetrics map[string]UpdateHandler
+
+	if err := json.Unmarshal(mBeansData.SolrMbeans[5], &updateMetrics); err != nil {
+		return err
+	}
+	for name, metrics := range updateMetrics {
+		var autoCommitMaxTime int64
+		if len(metrics.Stats.AutocommitMaxTime) > 2 {
+			autoCommitMaxTime, _ = strconv.ParseInt(metrics.Stats.AutocommitMaxTime[:len(metrics.Stats.AutocommitMaxTime)-2], 0, 64)
+		}
+		coreFields := map[string]interface{}{
+			"adds":                        metrics.Stats.Adds,
+			"autocommit_max_docs":         metrics.Stats.AutocommitMaxDocs,
+			"autocommit_max_time":         autoCommitMaxTime,
+			"autocommits":                 metrics.Stats.Autocommits,
+			"commits":                     metrics.Stats.Commits,
+			"cumulative_adds":             metrics.Stats.CumulativeAdds,
+			"cumulative_deletes_by_id":    metrics.Stats.CumulativeDeletesByID,
+			"cumulative_deletes_by_query": metrics.Stats.CumulativeDeletesByQuery,
+			"cumulative_errors":           metrics.Stats.CumulativeErrors,
+			"deletes_by_id":               metrics.Stats.DeletesByID,
+			"deletes_by_query":            metrics.Stats.DeletesByQuery,
+			"docs_pending":                metrics.Stats.DocsPending,
+			"errors":                      metrics.Stats.Errors,
+			"expunge_deletes":             metrics.Stats.ExpungeDeletes,
+			"optimizes":                   metrics.Stats.Optimizes,
+			"rollbacks":                   metrics.Stats.Rollbacks,
+			"soft_autocommits":            metrics.Stats.SoftAutocommits,
+		}
+		acc.AddFields(
+			"solr_updatehandler",
+			coreFields,
+			map[string]string{
+				"core":    core,
+				"handler": name},
+			time,
+		)
+	}
+	return nil
+}
+
+// Get float64 from interface
+func getFloat(unk interface{}) float64 {
+	switch i := unk.(type) {
+	case float64:
+		return i
+	case string:
+		f, _ := strconv.ParseFloat(i, 64)
+		return f
+	default:
+		return float64(0)
+	}
+}
+
+// Add cache metrics section to accumulator
+func addCacheMetricsToAcc(acc telegraf.Accumulator, core string, mBeansData *MBeansData, time time.Time) error {
+	var cacheMetrics map[string]Cache
+	if err := json.Unmarshal(mBeansData.SolrMbeans[7], &cacheMetrics); err != nil {
+		return err
+	}
+	for name, metrics := range cacheMetrics {
+		cumulativeHits := getFloat(metrics.Stats.CumulativeHitratio)
+		hitratio := getFloat(metrics.Stats.Hitratio)
+		coreFields := map[string]interface{}{
+			"cumulative_evictions": metrics.Stats.CumulativeEvictions,
+			"cumulative_hitratio":  cumulativeHits,
+			"cumulative_hits":      metrics.Stats.CumulativeHits,
+			"cumulative_inserts":   metrics.Stats.CumulativeInserts,
+			"cumulative_lookups":   metrics.Stats.CumulativeLookups,
+			"evictions":            metrics.Stats.Evictions,
+			"hitratio":             hitratio,
+			"hits":                 metrics.Stats.Hits,
+			"inserts":              metrics.Stats.Inserts,
+			"lookups":              metrics.Stats.Lookups,
+			"size":                 metrics.Stats.Size,
+			"warmup_time":          metrics.Stats.WarmupTime,
+		}
+		acc.AddFields(
+			"solr_cache",
+			coreFields,
+			map[string]string{
+				"core":    core,
+				"handler": name},
+			time,
+		)
+	}
+	return nil
+}
+
+// Provide admin url
+func (s *Solr) adminURL(server string) string {
+	return fmt.Sprintf("%s%s", server, adminCoresPath)
+}
+
+// Provide mbeans url
+func (s *Solr) mbeansURL(server string, core string) string {
+	return fmt.Sprintf("%s/solr/%s%s", server, core, mbeansPath)
+}
+
+func (s *Solr) createHTTPClient() *http.Client {
+	tr := &http.Transport{
+		ResponseHeaderTimeout: s.HTTPTimeout.Duration,
+	}
+	client := &http.Client{
+		Transport: tr,
+		Timeout:   s.HTTPTimeout.Duration,
+	}
+
+	return client
+}
+
+func (s *Solr) gatherData(url string, v interface{}) error {
+	r, err := s.client.Get(url)
+	if err != nil {
+		return err
+	}
+	defer r.Body.Close()
+	if r.StatusCode != http.StatusOK {
+		return fmt.Errorf("solr: API responded with status-code %d, expected %d, url %s",
+			r.StatusCode, http.StatusOK, url)
+	}
+	if err = json.NewDecoder(r.Body).Decode(v); err != nil {
+		return err
+	}
+	return nil
+}
+
+func init() {
+	inputs.Add("solr", func() telegraf.Input {
+		return NewSolr()
+	})
+}
diff --git a/plugins/inputs/solr/solr_test.go b/plugins/inputs/solr/solr_test.go
new file mode 100644
index 00000000..aaaba467
--- /dev/null
+++ b/plugins/inputs/solr/solr_test.go
@@ -0,0 +1,62 @@
+package solr
+
+import (
+	"fmt"
+	"net/http"
+	"net/http/httptest"
+	"strings"
+	"testing"
+
+	"github.com/influxdata/telegraf/testutil"
+	"github.com/stretchr/testify/require"
+)
+
+func TestGatherStats(t *testing.T) {
+	ts := createMockServer()
+	solr := NewSolr()
+	solr.Servers = []string{ts.URL}
+	var acc testutil.Accumulator
+	require.NoError(t, solr.Gather(&acc))
+
+	acc.AssertContainsTaggedFields(t, "solr_admin",
+		solrAdminMainCoreStatusExpected,
+		map[string]string{"core": "main"})
+
+	acc.AssertContainsTaggedFields(t, "solr_admin",
+		solrAdminCore1StatusExpected,
+		map[string]string{"core": "core1"})
+
+	acc.AssertContainsTaggedFields(t, "solr_core",
+		solrCoreExpected,
+		map[string]string{"core": "main", "handler": "searcher"})
+
+	acc.AssertContainsTaggedFields(t, "solr_queryhandler",
+		solrQueryHandlerExpected,
+		map[string]string{"core": "main", "handler": "org.apache.solr.handler.component.SearchHandler"})
+
+	acc.AssertContainsTaggedFields(t, "solr_updatehandler",
+		solrUpdateHandlerExpected,
+		map[string]string{"core": "main", "handler": "updateHandler"})
+
+	acc.AssertContainsTaggedFields(t, "solr_cache",
+		solrCacheExpected,
+		map[string]string{"core": "main", "handler": "filterCache"})
+}
+
+func createMockServer() *httptest.Server {
+	return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		if strings.Contains(r.URL.Path, "/solr/admin/cores") {
+			w.WriteHeader(http.StatusOK)
+			fmt.Fprintln(w, statusResponse)
+		} else if strings.Contains(r.URL.Path, "solr/main/admin") {
+			w.WriteHeader(http.StatusOK)
+			fmt.Fprintln(w, mBeansMainResponse)
+		} else if strings.Contains(r.URL.Path, "solr/core1/admin") {
+			w.WriteHeader(http.StatusOK)
+			fmt.Fprintln(w, mBeansCore1Response)
+		} else {
+			w.WriteHeader(http.StatusNotFound)
+			fmt.Fprintln(w, "nope")
+		}
+	}))
+}
diff --git a/plugins/inputs/solr/testdata_test.go b/plugins/inputs/solr/testdata_test.go
new file mode 100644
index 00000000..30ae0127
--- /dev/null
+++ b/plugins/inputs/solr/testdata_test.go
@@ -0,0 +1,1824 @@
+package solr
+
+const statusResponse = `
+{
+  "status": {
+    "core1": {
+      "index": {
+        "size": "1.66 GB",
+        "sizeInBytes": 1784635686,
+        "lastModified": "2017-01-14T10:30:07.419Z",
+        "userData": {
+          "commitTimeMSec": "1484389807419"
+        },
+        "numDocs": 7517488,
+        "maxDoc": 7620303,
+        "deletedDocs": 102815,
+        "version": 267485,
+        "segmentCount": 21,
+        "current": true,
+        "hasDeletions": true,
+        "directory": "org.apache.lucene.store.MMapDirectory:org.apache.lucene.store.MMapDirectory@/srv/solr-core1/index.20160607000000124 lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@646d42ce"
+      },
+      "name": "core1",
+      "isDefaultCore": false,
+      "instanceDir": "solr/core1/",
+      "dataDir": "/srv/solr-core1/",
+      "config": "solrconfig.xml",
+      "schema": "schema.xml",
+      "startTime": "2016-12-20T18:41:10.449Z",
+      "uptime": 2314746645
+    },
+    "main": {
+      "index": {
+        "size": "230.5 GB",
+        "sizeInBytes": 247497521642,
+        "lastModified": "2017-01-16T11:59:18.189Z",
+        "userData": {
+          "commitTimeMSec": "1484567958189"
+        },
+        "numDocs": 168943425,
+        "maxDoc": 169562700,
+        "deletedDocs": 619275,
+        "version": 70688464,
+        "segmentCount": 33,
+        "current": true,
+        "hasDeletions": true,
+        "directory": "org.apache.lucene.store.MMapDirectory:org.apache.lucene.store.MMapDirectory@/srv/solr/index.20161110090000012 lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@15088f05"
+      },
+      "name": "main",
+      "isDefaultCore": true,
+      "instanceDir": "solr/main/",
+      "dataDir": "/srv/solr/",
+      "config": "solrconfig.xml",
+      "schema": "schema.xml",
+      "startTime": "2016-12-20T18:41:10.796Z",
+      "uptime": 2314746294
+    }
+  },
+  "initFailures": {},
+  "defaultCoreName": "main",
+  "responseHeader": {
+    "QTime": 13,
+    "status": 0
+  }
+}
+`
+
+const mBeansMainResponse = `{
+  "solr-mbeans": [
+    "CORE",
+    {
+      "core": {
+        "stats": {
+          "aliases": [
+            "main"
+          ],
+          "indexDir": "/srv/solr/index.20161110090000012",
+          "refCount": 2,
+          "startTime": "2016-12-20T18:41:10.796Z",
+          "coreName": "main"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/SolrCore.java $",
+        "description": "SolrCore",
+        "version": "1.0",
+        "class": "main"
+      },
+      "searcher": {
+        "stats": {
+          "warmupTime": 0,
+          "registeredAt": "2017-01-17T09:00:03.303Z",
+          "openedAt": "2017-01-17T09:00:03.301Z",
+          "searcherName": "Searcher@62d3fac7 main",
+          "caching": true,
+          "numDocs": 168962621,
+          "maxDoc": 169647870,
+          "deletedDocs": 685249,
+          "reader": "StandardDirectoryReader(segments_jwq89:70709031:nrt _dp3n5(4.3.1):C168268689/592191 _dph0g(4.3.1):C311982/51776 _dpz3u(4.3.1):C589116/12754 _dpsbv(4.3.1):C262008/22358 _dq1e0(4.3.1):C104991/772 _dpy04(4.3.1):C24856/1389 _dq029(4.3.1):C42680/1406 _dq0rr(4.3.1):C5064/581 _dq13q(4.3.1):C4322/574 _dq165(4.3.1):C4679/364 _dq1kt(4.3.1):C8124/196 _dq1ta(4.3.1):C8138/152 _dq1x7(4.3.1):C3842/76 _dq212(4.3.1):C4934/111 _dq1wi(4.3.1):C778/145 _dq20q(4.3.1):C805/92 _dq20g(4.3.1):C1183/96 _dq21g(4.3.1):C257/58 _dq20y(4.3.1):C159/19 _dq213(4.3.1):C108/17 _dq218(4.3.1):C89/9 _dq21a(4.3.1):C213/20 _dq21d(4.3.1):C100/10 _dq21f(4.3.1):C214/16 _dq21j(4.3.1):C198/17 _dq21m(4.3.1):C112/2 _dq21n(4.3.1):C105/46 _dq21o(4.3.1):C124/2)",
+          "readerDir": "org.apache.lucene.store.MMapDirectory:org.apache.lucene.store.MMapDirectory@/srv/solr/index.20161110090000012 lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@15088f05",
+          "indexVersion": 70709031
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java $",
+        "description": "index searcher",
+        "version": "1.0",
+        "class": "org.apache.solr.search.SolrIndexSearcher"
+      },
+      "Searcher@62d3fac7 main": {
+        "stats": {
+          "warmupTime": 0,
+          "registeredAt": "2017-01-17T09:00:03.303Z",
+          "openedAt": "2017-01-17T09:00:03.301Z",
+          "searcherName": "Searcher@62d3fac7 main",
+          "caching": true,
+          "numDocs": 168962621,
+          "maxDoc": 169647870,
+          "deletedDocs": 685249,
+          "reader": "StandardDirectoryReader(segments_jwq89:70709031:nrt _dp3n5(4.3.1):C168268689/592191 _dph0g(4.3.1):C311982/51776 _dpz3u(4.3.1):C589116/12754 _dpsbv(4.3.1):C262008/22358 _dq1e0(4.3.1):C104991/772 _dpy04(4.3.1):C24856/1389 _dq029(4.3.1):C42680/1406 _dq0rr(4.3.1):C5064/581 _dq13q(4.3.1):C4322/574 _dq165(4.3.1):C4679/364 _dq1kt(4.3.1):C8124/196 _dq1ta(4.3.1):C8138/152 _dq1x7(4.3.1):C3842/76 _dq212(4.3.1):C4934/111 _dq1wi(4.3.1):C778/145 _dq20q(4.3.1):C805/92 _dq20g(4.3.1):C1183/96 _dq21g(4.3.1):C257/58 _dq20y(4.3.1):C159/19 _dq213(4.3.1):C108/17 _dq218(4.3.1):C89/9 _dq21a(4.3.1):C213/20 _dq21d(4.3.1):C100/10 _dq21f(4.3.1):C214/16 _dq21j(4.3.1):C198/17 _dq21m(4.3.1):C112/2 _dq21n(4.3.1):C105/46 _dq21o(4.3.1):C124/2)",
+          "readerDir": "org.apache.lucene.store.MMapDirectory:org.apache.lucene.store.MMapDirectory@/srv/solr/index.20161110090000012 lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@15088f05",
+          "indexVersion": 70709031
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java $",
+        "description": "index searcher",
+        "version": "1.0",
+        "class": "org.apache.solr.search.SolrIndexSearcher"
+      }
+    },
+    "QUERYHANDLER",
+    {
+      "org.apache.solr.handler.CSVRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270814,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/CSVRequestHandler.java $",
+        "description": "Add/Update multiple documents with CSV formatted rows",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.CSVRequestHandler"
+      },
+      "/admin/": {
+        "stats": null,
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/AdminHandlers.java $",
+        "description": "Register Standard Admin Handlers",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.AdminHandlers"
+      },
+      "/admin/mbeans": {
+        "stats": {
+          "999thPcRequestTime": 129.19901009200038,
+          "99thPcRequestTime": 11.944256130000017,
+          "95thPcRequestTime": 9.10313265,
+          "75thPcRequestTime": 7.423904,
+          "medianRequestTime": 0.046796000000000004,
+          "avgTimePerRequest": 2.0964317122172575,
+          "handlerStart": 1482259271568,
+          "requests": 230953,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 484175.0968,
+          "avgRequestsPerSecond": 0.0967113175627352,
+          "5minRateReqsPerSecond": 0.5543011916891444,
+          "15minRateReqsPerSecond": 0.5409225999558686
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java $",
+        "description": "Get Info (and statistics) for registered SolrInfoMBeans",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.SolrInfoMBeanHandler"
+      },
+      "/debug/dump": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270816,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java $",
+        "description": "Dump handler (debug)",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.DumpRequestHandler"
+      },
+      "/admin/logging": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259271569,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java $",
+        "description": "Logging Handler",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.LoggingHandler"
+      },
+      "/admin/plugins": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259271568,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java $",
+        "description": "Registry",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.PluginInfoHandler"
+      },
+      "/admin/system": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259271568,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java $",
+        "description": "Get System Info",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.SystemInfoHandler"
+      },
+      "/select": {
+        "stats": {
+          "999thPcRequestTime": 145.3845197990004,
+          "99thPcRequestTime": 1.404113640000005,
+          "95thPcRequestTime": 0.21192269999999988,
+          "75thPcRequestTime": 0.12097,
+          "medianRequestTime": 0.116272,
+          "avgTimePerRequest": 3.0322834013981987,
+          "handlerStart": 1482259270810,
+          "requests": 729510,
+          "errors": 0,
+          "timeouts": 9,
+          "totalTime": 2212081.064154,
+          "avgRequestsPerSecond": 0.3054827447483145,
+          "5minRateReqsPerSecond": 0.32614693588972216,
+          "15minRateReqsPerSecond": 0.3320899738059959
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java $",
+        "description": "Search using components: query,facet,mlt,highlight,stats,spellcheck,debug,",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.component.SearchHandler"
+      },
+      "/tvrh": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.SearchHandler]",
+        "version": null,
+        "class": "Lazy[solr.SearchHandler]"
+      },
+      "org.apache.solr.handler.component.SearchHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270810,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java $",
+        "description": "Search using components: query,facet,mlt,highlight,stats,debug,",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.component.SearchHandler"
+      },
+      "/admin/luke": {
+        "stats": {
+          "999thPcRequestTime": 0.4085,
+          "99thPcRequestTime": 0.4085,
+          "95thPcRequestTime": 0.4085,
+          "75thPcRequestTime": 0.4085,
+          "medianRequestTime": 0.31491,
+          "avgTimePerRequest": 0.3105803333333333,
+          "handlerStart": 1482259271568,
+          "requests": 3,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0.931741,
+          "avgRequestsPerSecond": 1.256252178648736e-06,
+          "5minRateReqsPerSecond": 1.4821969375e-313,
+          "15minRateReqsPerSecond": 1.387107477978473e-152
+        },
+        "docs": [
+          "http://wiki.apache.org/solr/LukeRequestHandler"
+        ],
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java $",
+        "description": "Lucene Index Browser.  Inspired and modeled after Luke: http://www.getopt.org/luke/",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.LukeRequestHandler"
+      },
+      "/update/json": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270814,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/JsonUpdateRequestHandler.java $",
+        "description": "Add documents with JSON",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.JsonUpdateRequestHandler"
+      },
+      "org.apache.solr.handler.admin.AdminHandlers": {
+        "stats": null,
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/AdminHandlers.java $",
+        "description": "Register Standard Admin Handlers",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.AdminHandlers"
+      },
+      "org.apache.solr.handler.ReplicationHandler": {
+        "stats": {
+          "lastCycleBytesDownloaded": "240149545",
+          "timesIndexReplicated": "2697",
+          "timesFailed": "1",
+          "replicationFailedAt": "Mon Jun 06 11:55:11 UTC 2016",
+          "indexReplicatedAt": "Tue Jan 17 09:00:03 UTC 2017",
+          "previousCycleTimeInSeconds": "3",
+          "isReplicating": "false",
+          "isPollingDisabled": "false",
+          "pollInterval": "03:00:00",
+          "masterUrl": "http://solr-s1:8983/solr/main",
+          "isSlave": "true",
+          "isMaster": "false",
+          "indexPath": "/srv/solr/index.20161110090000012",
+          "generation": 33439689,
+          "15minRateReqsPerSecond": 4.3340312709959365e-152,
+          "5minRateReqsPerSecond": 1.4821969375e-313,
+          "avgRequestsPerSecond": 2.0937529718964145e-06,
+          "totalTime": 49.630943,
+          "timeouts": 0,
+          "errors": 0,
+          "requests": 5,
+          "handlerStart": 1482259270817,
+          "avgTimePerRequest": 9.9261886,
+          "medianRequestTime": 8.547115,
+          "75thPcRequestTime": 12.1924675,
+          "95thPcRequestTime": 15.377019,
+          "99thPcRequestTime": 15.377019,
+          "999thPcRequestTime": 15.377019,
+          "indexSize": "229.77 GB",
+          "indexVersion": 1484643564822
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java $",
+        "description": "ReplicationHandler provides replication of index and configuration files from Master to Slaves",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.ReplicationHandler"
+      },
+      "org.apache.solr.handler.JsonUpdateRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270814,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/JsonUpdateRequestHandler.java $",
+        "description": "Add documents with JSON",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.JsonUpdateRequestHandler"
+      },
+      "org.apache.solr.handler.DumpRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270816,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java $",
+        "description": "Dump handler (debug)",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.DumpRequestHandler"
+      },
+      "org.apache.solr.handler.RealTimeGetHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270810,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java $",
+        "description": "The realtime get handler",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.RealTimeGetHandler"
+      },
+      "/get": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270810,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java $",
+        "description": "The realtime get handler",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.RealTimeGetHandler"
+      },
+      "/admin/properties": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259271568,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/PropertiesRequestHandler.java $",
+        "description": "Get System Properties",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.PropertiesRequestHandler"
+      },
+      "/query": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270810,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java $",
+        "description": "Search using components: query,facet,mlt,highlight,stats,debug,",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.component.SearchHandler"
+      },
+      "/admin/threads": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259271568,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java $",
+        "description": "Thread Dump",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.ThreadDumpHandler"
+      },
+      "/analysis/field": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.FieldAnalysisRequestHandler]",
+        "version": null,
+        "class": "Lazy[solr.FieldAnalysisRequestHandler]"
+      },
+      "org.apache.solr.handler.PingRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 41.331967987,
+          "99thPcRequestTime": 5.392157590000151,
+          "95thPcRequestTime": 0.4901222999999999,
+          "75thPcRequestTime": 0.357574,
+          "medianRequestTime": 0.3474125,
+          "avgTimePerRequest": 0.7749319095595372,
+          "handlerStart": 1482259270816,
+          "requests": 477021,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 369658.79443,
+          "avgRequestsPerSecond": 0.19975282688134827,
+          "5minRateReqsPerSecond": 0.2000000000000008,
+          "15minRateReqsPerSecond": 0.20000000000000234
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/PingRequestHandler.java $",
+        "description": "Reports application health to a load-balancer",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.PingRequestHandler"
+      },
+      "/analysis/document": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.DocumentAnalysisRequestHandler]",
+        "version": null,
+        "class": "Lazy[solr.DocumentAnalysisRequestHandler]"
+      },
+      "/spell": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.SearchHandler]",
+        "version": null,
+        "class": "Lazy[solr.SearchHandler]"
+      },
+      "/update/csv": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270814,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/CSVRequestHandler.java $",
+        "description": "Add/Update multiple documents with CSV formatted rows",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.CSVRequestHandler"
+      },
+      "org.apache.solr.handler.UpdateRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270811,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java $",
+        "description": "Add documents using XML (with XSLT), CSV, JSON, or javabin",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.UpdateRequestHandler"
+      },
+      "/replication": {
+        "stats": {
+          "lastCycleBytesDownloaded": "240149545",
+          "timesIndexReplicated": "2697",
+          "timesFailed": "1",
+          "replicationFailedAt": "Mon Jun 06 11:55:11 UTC 2016",
+          "indexReplicatedAt": "Tue Jan 17 09:00:03 UTC 2017",
+          "previousCycleTimeInSeconds": "3",
+          "isReplicating": "false",
+          "isPollingDisabled": "false",
+          "pollInterval": "03:00:00",
+          "masterUrl": "http://solr-s1:8983/solr/main",
+          "isSlave": "true",
+          "isMaster": "false",
+          "indexPath": "/srv/solr/index.20161110090000012",
+          "generation": 33439689,
+          "15minRateReqsPerSecond": 4.3340312709959365e-152,
+          "5minRateReqsPerSecond": 1.4821969375e-313,
+          "avgRequestsPerSecond": 2.0937529681743243e-06,
+          "totalTime": 49.630943,
+          "timeouts": 0,
+          "errors": 0,
+          "requests": 5,
+          "handlerStart": 1482259270817,
+          "avgTimePerRequest": 9.9261886,
+          "medianRequestTime": 8.547115,
+          "75thPcRequestTime": 12.1924675,
+          "95thPcRequestTime": 15.377019,
+          "99thPcRequestTime": 15.377019,
+          "999thPcRequestTime": 15.377019,
+          "indexSize": "229.77 GB",
+          "indexVersion": 1484643564822
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java $",
+        "description": "ReplicationHandler provides replication of index and configuration files from Master to Slaves",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.ReplicationHandler"
+      },
+      "/admin/ping": {
+        "stats": {
+          "999thPcRequestTime": 41.331967987,
+          "99thPcRequestTime": 5.392157590000151,
+          "95thPcRequestTime": 0.4901222999999999,
+          "75thPcRequestTime": 0.357574,
+          "medianRequestTime": 0.3474125,
+          "avgTimePerRequest": 0.7749319095595372,
+          "handlerStart": 1482259270816,
+          "requests": 477021,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 369658.79443,
+          "avgRequestsPerSecond": 0.19975282659471533,
+          "5minRateReqsPerSecond": 0.2000000000000008,
+          "15minRateReqsPerSecond": 0.20000000000000234
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/PingRequestHandler.java $",
+        "description": "Reports application health to a load-balancer",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.PingRequestHandler"
+      },
+      "/update": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270811,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java $",
+        "description": "Add documents using XML (with XSLT), CSV, JSON, or javabin",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.UpdateRequestHandler"
+      },
+      "/terms": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.SearchHandler]",
+        "version": null,
+        "class": "Lazy[solr.SearchHandler]"
+      },
+      "/admin/file": {
+        "stats": {
+          "999thPcRequestTime": 0.509739,
+          "99thPcRequestTime": 0.509739,
+          "95thPcRequestTime": 0.509739,
+          "75thPcRequestTime": 0.38605350000000005,
+          "medianRequestTime": 0.184437,
+          "avgTimePerRequest": 0.2358606,
+          "handlerStart": 1482259271569,
+          "requests": 5,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 1.179303,
+          "avgRequestsPerSecond": 2.0937536245042723e-06,
+          "5minRateReqsPerSecond": 1.4821969375e-313,
+          "15minRateReqsPerSecond": 3.0856020161426622e-152
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java $",
+        "description": "Admin Get File -- view config files directly",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.ShowFileRequestHandler"
+      },
+      "/update/extract": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.extraction.ExtractingRequestHandler]",
+        "version": null,
+        "class": "Lazy[solr.extraction.ExtractingRequestHandler]"
+      }
+    },
+    "UPDATEHANDLER",
+    {
+      "updateHandler": {
+        "stats": {
+          "cumulative_errors": 0,
+          "expungeDeletes": 0,
+          "rollbacks": 0,
+          "optimizes": 0,
+          "soft autocommits": 0,
+          "autocommits": 0,
+          "autocommit maxTime": "900ms",
+          "autocommit maxDocs": 500,
+          "commits": 0,
+          "docsPending": 0,
+          "adds": 0,
+          "deletesById": 0,
+          "deletesByQuery": 0,
+          "errors": 0,
+          "cumulative_adds": 0,
+          "cumulative_deletesById": 0,
+          "cumulative_deletesByQuery": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java $",
+        "description": "Update handler that efficiently directly updates the on-disk main lucene index",
+        "version": "1.0",
+        "class": "org.apache.solr.update.DirectUpdateHandler2"
+      }
+    },
+    "CACHE",
+    {
+      "fieldCache": {
+        "stats": {
+          "insanity_count": 0,
+          "entries_count": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/SolrFieldCacheMBean.java $",
+        "description": "Provides introspection of the Lucene FieldCache, this is **NOT** a cache that is managed by Solr.",
+        "version": "1.0",
+        "class": "org.apache.solr.search.SolrFieldCacheMBean"
+      },
+      "fieldValueCache": {
+        "stats": {
+          "cumulative_evictions": 0,
+          "cumulative_inserts": 0,
+          "cumulative_hitratio": "0.00",
+          "cumulative_hits": 0,
+          "lookups": 0,
+          "hits": 0,
+          "hitratio": "0.00",
+          "inserts": 0,
+          "evictions": 0,
+          "size": 0,
+          "warmupTime": 0,
+          "cumulative_lookups": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/FastLRUCache.java $",
+        "description": "Concurrent LRU Cache(maxSize=5120, initialSize=5120, minSize=4608, acceptableSize=4864, cleanupThread=false, autowarmCount=1024, regenerator=org.apache.solr.search.SolrIndexSearcher$1@40acdd5)",
+        "version": "1.0",
+        "class": "org.apache.solr.search.FastLRUCache"
+      },
+      "documentCache": {
+        "stats": {
+          "cumulative_evictions": 0,
+          "cumulative_inserts": 5746,
+          "cumulative_hitratio": "0.99",
+          "cumulative_hits": 2405834,
+          "lookups": 3750,
+          "hits": 3733,
+          "hitratio": "0.99",
+          "inserts": 17,
+          "evictions": 0,
+          "size": 17,
+          "warmupTime": 0,
+          "cumulative_lookups": 2411580
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/FastLRUCache.java $",
+        "description": "Concurrent LRU Cache(maxSize=10240, initialSize=10240, minSize=9216, acceptableSize=9728, cleanupThread=false)",
+        "version": "1.0",
+        "class": "org.apache.solr.search.FastLRUCache"
+      },
+      "queryResultCache": {
+        "stats": {
+          "cumulative_evictions": 0,
+          "cumulative_inserts": 2660,
+          "cumulative_hitratio": "0.99",
+          "cumulative_hits": 726607,
+          "lookups": 1206,
+          "hits": 1179,
+          "hitratio": "0.97",
+          "inserts": 27,
+          "evictions": 0,
+          "size": 27,
+          "warmupTime": 0,
+          "cumulative_lookups": 729510
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/FastLRUCache.java $",
+        "description": "Concurrent LRU Cache(maxSize=5120, initialSize=5120, minSize=4608, acceptableSize=4864, cleanupThread=false)",
+        "version": "1.0",
+        "class": "org.apache.solr.search.FastLRUCache"
+      },
+      "filterCache": {
+        "stats": {
+          "cumulative_evictions": 0,
+          "cumulative_inserts": 14,
+          "cumulative_hitratio": 0,
+          "cumulative_hits": 55,
+          "lookups": 0,
+          "hits": 0,
+          "hitratio": "0.01",
+          "inserts": 0,
+          "evictions": 0,
+          "size": 0,
+          "warmupTime": 0,
+          "cumulative_lookups": 69
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/FastLRUCache.java $",
+        "description": "Concurrent LRU Cache(maxSize=2560, initialSize=2560, minSize=2304, acceptableSize=2432, cleanupThread=false)",
+        "version": "1.0",
+        "class": "org.apache.solr.search.FastLRUCache"
+      }
+    }
+  ],
+  "responseHeader": {
+    "QTime": 8,
+    "status": 0
+  }
+}
+`
+
+const mBeansCore1Response = `{
+  "solr-mbeans": [
+    "CORE",
+    {
+      "core": {
+        "stats": {
+          "aliases": [
+            "corename"
+          ],
+          "indexDir": "/srv/solr-corename/index.20160607000000124",
+          "refCount": 2,
+          "startTime": "2016-12-20T18:41:10.449Z",
+          "coreName": "core1"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/SolrCore.java $",
+        "description": "SolrCore",
+        "version": "1.0",
+        "class": "core1"
+      },
+      "Searcher@6f0833b2 main": {
+        "stats": {
+          "warmupTime": 0,
+          "registeredAt": "2017-01-14T12:00:00.209Z",
+          "openedAt": "2017-01-14T12:00:00.208Z",
+          "searcherName": "Searcher@6f0833b2 main",
+          "caching": true,
+          "numDocs": 7517488,
+          "maxDoc": 7620303,
+          "deletedDocs": 102815,
+          "reader": "StandardDirectoryReader(segments_20iv:267485:nrt _2849(4.3.1):C7517434/102330 _28e8(4.3.1):C7363/115 _28h0(4.3.1):C5430/77 _28kw(4.3.1):C5984 _28k2(4.3.1):C6510/12 _28g6(4.3.1):C4537/25 _28ha(4.3.1):C5529/25 _28i4(4.3.1):C5087/42 _28js(4.3.1):C5823/10 _28ix(4.3.1):C5627/18 _28kc(4.3.1):C6710/14 _28kl(4.3.1):C7179/10 _28hk(4.3.1):C5149/65 _28j7(4.3.1):C5643/28 _28ht(4.3.1):C5428/9 _28ji(4.3.1):C5150/15 _28gq(4.3.1):C4989/9 _28ie(4.3.1):C5460/8 _28io(4.3.1):C5165/3 _28kv(4.3.1):C51 _28kx(4.3.1):C55)",
+          "readerDir": "org.apache.lucene.store.MMapDirectory:org.apache.lucene.store.MMapDirectory@/srv/solr-core1/index.20160607000000124 lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@646d42ce",
+          "indexVersion": 267485
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java $",
+        "description": "index searcher",
+        "version": "1.0",
+        "class": "org.apache.solr.search.SolrIndexSearcher"
+      },
+      "searcher": {
+        "stats": {
+          "warmupTime": 0,
+          "registeredAt": "2017-01-14T12:00:00.209Z",
+          "openedAt": "2017-01-14T12:00:00.208Z",
+          "searcherName": "Searcher@6f0833b2 main",
+          "caching": true,
+          "numDocs": 7517488,
+          "maxDoc": 7620303,
+          "deletedDocs": 102815,
+          "reader": "StandardDirectoryReader(segments_20iv:267485:nrt _2849(4.3.1):C7517434/102330 _28e8(4.3.1):C7363/115 _28h0(4.3.1):C5430/77 _28kw(4.3.1):C5984 _28k2(4.3.1):C6510/12 _28g6(4.3.1):C4537/25 _28ha(4.3.1):C5529/25 _28i4(4.3.1):C5087/42 _28js(4.3.1):C5823/10 _28ix(4.3.1):C5627/18 _28kc(4.3.1):C6710/14 _28kl(4.3.1):C7179/10 _28hk(4.3.1):C5149/65 _28j7(4.3.1):C5643/28 _28ht(4.3.1):C5428/9 _28ji(4.3.1):C5150/15 _28gq(4.3.1):C4989/9 _28ie(4.3.1):C5460/8 _28io(4.3.1):C5165/3 _28kv(4.3.1):C51 _28kx(4.3.1):C55)",
+          "readerDir": "org.apache.lucene.store.MMapDirectory:org.apache.lucene.store.MMapDirectory@/srv/solr-core1/index.20160607000000124 lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@646d42ce",
+          "indexVersion": 267485
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java $",
+        "description": "index searcher",
+        "version": "1.0",
+        "class": "org.apache.solr.search.SolrIndexSearcher"
+      }
+    },
+    "QUERYHANDLER",
+    {
+      "org.apache.solr.handler.CSVRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270458,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/CSVRequestHandler.java $",
+        "description": "Add/Update multiple documents with CSV formatted rows",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.CSVRequestHandler"
+      },
+      "/admin/": {
+        "stats": null,
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/AdminHandlers.java $",
+        "description": "Register Standard Admin Handlers",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.AdminHandlers"
+      },
+      "/admin/mbeans": {
+        "stats": {
+          "999thPcRequestTime": 127.79069480400044,
+          "99thPcRequestTime": 9.033666420000003,
+          "95thPcRequestTime": 5.586449799999999,
+          "75thPcRequestTime": 4.68247075,
+          "medianRequestTime": 0.03985,
+          "avgTimePerRequest": 1.5857040673599807,
+          "handlerStart": 1482259270585,
+          "requests": 230969,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 366246.89703,
+          "avgRequestsPerSecond": 0.09671315555928528,
+          "5minRateReqsPerSecond": 0.545082835587804,
+          "15minRateReqsPerSecond": 0.5414280756665533
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java $",
+        "description": "Get Info (and statistics) for registered SolrInfoMBeans",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.SolrInfoMBeanHandler"
+      },
+      "/debug/dump": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270462,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java $",
+        "description": "Dump handler (debug)",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.DumpRequestHandler"
+      },
+      "/admin/logging": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270585,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java $",
+        "description": "Logging Handler",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.LoggingHandler"
+      },
+      "/admin/plugins": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270585,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java $",
+        "description": "Registry",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.PluginInfoHandler"
+      },
+      "/admin/system": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270585,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java $",
+        "description": "Get System Info",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.SystemInfoHandler"
+      },
+      "/select": {
+        "stats": {
+          "999thPcRequestTime": 0.518583,
+          "99thPcRequestTime": 0.518583,
+          "95thPcRequestTime": 0.518583,
+          "75thPcRequestTime": 0.518583,
+          "medianRequestTime": 0.518583,
+          "avgTimePerRequest": 0.518583,
+          "handlerStart": 1482259270455,
+          "requests": 1,
+          "errors": 1,
+          "timeouts": 0,
+          "totalTime": 0.518583,
+          "avgRequestsPerSecond": 4.187296521163843e-07,
+          "5minRateReqsPerSecond": 1.4821969375e-313,
+          "15minRateReqsPerSecond": 4.44659081257e-313
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java $",
+        "description": "Search using components: query,facet,mlt,highlight,stats,spellcheck,debug,",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.component.SearchHandler"
+      },
+      "/tvrh": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.SearchHandler]",
+        "version": null,
+        "class": "Lazy[solr.SearchHandler]"
+      },
+      "org.apache.solr.handler.component.SearchHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270455,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java $",
+        "description": "Search using components: query,facet,mlt,highlight,stats,debug,",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.component.SearchHandler"
+      },
+      "/admin/luke": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270585,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "docs": [
+          "http://wiki.apache.org/solr/LukeRequestHandler"
+        ],
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java $",
+        "description": "Lucene Index Browser.  Inspired and modeled after Luke: http://www.getopt.org/luke/",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.LukeRequestHandler"
+      },
+      "/update/json": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270457,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/JsonUpdateRequestHandler.java $",
+        "description": "Add documents with JSON",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.JsonUpdateRequestHandler"
+      },
+      "org.apache.solr.handler.admin.AdminHandlers": {
+        "stats": null,
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/AdminHandlers.java $",
+        "description": "Register Standard Admin Handlers",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.AdminHandlers"
+      },
+      "org.apache.solr.handler.ReplicationHandler": {
+        "stats": {
+          "lastCycleBytesDownloaded": "2578996",
+          "timesIndexReplicated": "468",
+          "timesFailed": "2",
+          "replicationFailedAt": "Fri Feb 12 00:00:00 UTC 2016",
+          "indexReplicatedAt": "Sat Jan 14 12:00:00 UTC 2017",
+          "previousCycleTimeInSeconds": "0",
+          "isReplicating": "false",
+          "isPollingDisabled": "false",
+          "pollInterval": "12:00:00",
+          "masterUrl": "http://solr-s1:8983/solr/core1",
+          "isSlave": "true",
+          "isMaster": "false",
+          "indexPath": "/srv/solr-core1/index.20160607000000124",
+          "generation": 93991,
+          "15minRateReqsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "avgRequestsPerSecond": 0,
+          "totalTime": 0,
+          "timeouts": 0,
+          "errors": 0,
+          "requests": 0,
+          "handlerStart": 1482259270463,
+          "avgTimePerRequest": 0,
+          "medianRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "999thPcRequestTime": 0,
+          "indexSize": "1.66 GB",
+          "indexVersion": 1484389807419
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java $",
+        "description": "ReplicationHandler provides replication of index and configuration files from Master to Slaves",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.ReplicationHandler"
+      },
+      "org.apache.solr.handler.JsonUpdateRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270457,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/JsonUpdateRequestHandler.java $",
+        "description": "Add documents with JSON",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.JsonUpdateRequestHandler"
+      },
+      "org.apache.solr.handler.DumpRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270462,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java $",
+        "description": "Dump handler (debug)",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.DumpRequestHandler"
+      },
+      "org.apache.solr.handler.RealTimeGetHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270456,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java $",
+        "description": "The realtime get handler",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.RealTimeGetHandler"
+      },
+      "/get": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270456,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/RealTimeGetHandler.java $",
+        "description": "The realtime get handler",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.RealTimeGetHandler"
+      },
+      "/admin/properties": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270585,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/PropertiesRequestHandler.java $",
+        "description": "Get System Properties",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.PropertiesRequestHandler"
+      },
+      "/query": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270455,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java $",
+        "description": "Search using components: query,facet,mlt,highlight,stats,debug,",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.component.SearchHandler"
+      },
+      "/admin/threads": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270585,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java $",
+        "description": "Thread Dump",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.ThreadDumpHandler"
+      },
+      "/analysis/field": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.FieldAnalysisRequestHandler]",
+        "version": null,
+        "class": "Lazy[solr.FieldAnalysisRequestHandler]"
+      },
+      "org.apache.solr.handler.PingRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270461,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/PingRequestHandler.java $",
+        "description": "Reports application health to a load-balancer",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.PingRequestHandler"
+      },
+      "/analysis/document": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.DocumentAnalysisRequestHandler]",
+        "version": null,
+        "class": "Lazy[solr.DocumentAnalysisRequestHandler]"
+      },
+      "/spell": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.SearchHandler]",
+        "version": null,
+        "class": "Lazy[solr.SearchHandler]"
+      },
+      "/update/csv": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270458,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/CSVRequestHandler.java $",
+        "description": "Add/Update multiple documents with CSV formatted rows",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.CSVRequestHandler"
+      },
+      "org.apache.solr.handler.UpdateRequestHandler": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270457,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java $",
+        "description": "Add documents using XML (with XSLT), CSV, JSON, or javabin",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.UpdateRequestHandler"
+      },
+      "/replication": {
+        "stats": {
+          "lastCycleBytesDownloaded": "2578996",
+          "timesIndexReplicated": "468",
+          "timesFailed": "2",
+          "replicationFailedAt": "Fri Feb 12 00:00:00 UTC 2016",
+          "indexReplicatedAt": "Sat Jan 14 12:00:00 UTC 2017",
+          "previousCycleTimeInSeconds": "0",
+          "isReplicating": "false",
+          "isPollingDisabled": "false",
+          "pollInterval": "12:00:00",
+          "masterUrl": "http://solr-s1:8983/solr/core1",
+          "isSlave": "true",
+          "isMaster": "false",
+          "indexPath": "/srv/solr-core1/index.20160607000000124",
+          "generation": 93991,
+          "15minRateReqsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "avgRequestsPerSecond": 0,
+          "totalTime": 0,
+          "timeouts": 0,
+          "errors": 0,
+          "requests": 0,
+          "handlerStart": 1482259270463,
+          "avgTimePerRequest": 0,
+          "medianRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "999thPcRequestTime": 0,
+          "indexSize": "1.66 GB",
+          "indexVersion": 1484389807419
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java $",
+        "description": "ReplicationHandler provides replication of index and configuration files from Master to Slaves",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.ReplicationHandler"
+      },
+      "/admin/ping": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270461,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/PingRequestHandler.java $",
+        "description": "Reports application health to a load-balancer",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.PingRequestHandler"
+      },
+      "/update": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270457,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java $",
+        "description": "Add documents using XML (with XSLT), CSV, JSON, or javabin",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.UpdateRequestHandler"
+      },
+      "/terms": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.SearchHandler]",
+        "version": null,
+        "class": "Lazy[solr.SearchHandler]"
+      },
+      "/admin/file": {
+        "stats": {
+          "999thPcRequestTime": 0,
+          "99thPcRequestTime": 0,
+          "95thPcRequestTime": 0,
+          "75thPcRequestTime": 0,
+          "medianRequestTime": 0,
+          "avgTimePerRequest": 0,
+          "handlerStart": 1482259270585,
+          "requests": 0,
+          "errors": 0,
+          "timeouts": 0,
+          "totalTime": 0,
+          "avgRequestsPerSecond": 0,
+          "5minRateReqsPerSecond": 0,
+          "15minRateReqsPerSecond": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java $",
+        "description": "Admin Get File -- view config files directly",
+        "version": "4.3.1",
+        "class": "org.apache.solr.handler.admin.ShowFileRequestHandler"
+      },
+      "/update/extract": {
+        "stats": {
+          "note": "not initialized yet"
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/core/RequestHandlers.java $",
+        "description": "Lazy[solr.extraction.ExtractingRequestHandler]",
+        "version": null,
+        "class": "Lazy[solr.extraction.ExtractingRequestHandler]"
+      }
+    },
+    "UPDATEHANDLER",
+    {
+      "updateHandler": {
+        "stats": {
+          "cumulative_errors": 0,
+          "expungeDeletes": 0,
+          "rollbacks": 0,
+          "optimizes": 0,
+          "soft autocommits": 0,
+          "autocommits": 0,
+          "autocommit maxTime": "900ms",
+          "autocommit maxDocs": 500,
+          "commits": 0,
+          "docsPending": 0,
+          "adds": 0,
+          "deletesById": 0,
+          "deletesByQuery": 0,
+          "errors": 0,
+          "cumulative_adds": 0,
+          "cumulative_deletesById": 0,
+          "cumulative_deletesByQuery": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java $",
+        "description": "Update handler that efficiently directly updates the on-disk main lucene index",
+        "version": "1.0",
+        "class": "org.apache.solr.update.DirectUpdateHandler2"
+      }
+    },
+    "CACHE",
+    {
+      "fieldCache": {
+        "stats": {
+          "insanity_count": 0,
+          "entries_count": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/SolrFieldCacheMBean.java $",
+        "description": "Provides introspection of the Lucene FieldCache, this is **NOT** a cache that is managed by Solr.",
+        "version": "1.0",
+        "class": "org.apache.solr.search.SolrFieldCacheMBean"
+      },
+      "fieldValueCache": {
+        "stats": {
+          "cumulative_evictions": 0,
+          "cumulative_inserts": 0,
+          "cumulative_hitratio": "0.00",
+          "cumulative_hits": 0,
+          "lookups": 0,
+          "hits": 0,
+          "hitratio": "0.00",
+          "inserts": 0,
+          "evictions": 0,
+          "size": 0,
+          "warmupTime": 0,
+          "cumulative_lookups": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/FastLRUCache.java $",
+        "description": "Concurrent LRU Cache(maxSize=4096, initialSize=4096, minSize=3686, acceptableSize=3891, cleanupThread=false, autowarmCount=128, regenerator=org.apache.solr.search.SolrIndexSearcher$1@58c2e3e9)",
+        "version": "1.0",
+        "class": "org.apache.solr.search.FastLRUCache"
+      },
+      "documentCache": {
+        "stats": {
+          "cumulative_evictions": 0,
+          "cumulative_inserts": 0,
+          "cumulative_hitratio": "0.00",
+          "cumulative_hits": 0,
+          "lookups": 0,
+          "hits": 0,
+          "hitratio": "0.00",
+          "inserts": 0,
+          "evictions": 0,
+          "size": 0,
+          "warmupTime": 0,
+          "cumulative_lookups": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/FastLRUCache.java $",
+        "description": "Concurrent LRU Cache(maxSize=32768, initialSize=32768, minSize=29491, acceptableSize=31129, cleanupThread=false)",
+        "version": "1.0",
+        "class": "org.apache.solr.search.FastLRUCache"
+      },
+      "queryResultCache": {
+        "stats": {
+          "cumulative_evictions": 0,
+          "cumulative_inserts": 0,
+          "cumulative_hitratio": "0.00",
+          "cumulative_hits": 0,
+          "lookups": 0,
+          "hits": 0,
+          "hitratio": "0.00",
+          "inserts": 0,
+          "evictions": 0,
+          "size": 0,
+          "warmupTime": 0,
+          "cumulative_lookups": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/FastLRUCache.java $",
+        "description": "Concurrent LRU Cache(maxSize=4096, initialSize=4096, minSize=3686, acceptableSize=3891, cleanupThread=false)",
+        "version": "1.0",
+        "class": "org.apache.solr.search.FastLRUCache"
+      },
+      "filterCache": {
+        "stats": {
+          "cumulative_evictions": 0,
+          "cumulative_inserts": 0,
+          "cumulative_hitratio": "0.00",
+          "cumulative_hits": 0,
+          "lookups": 0,
+          "hits": 0,
+          "hitratio": "0.00",
+          "inserts": 0,
+          "evictions": 0,
+          "size": 0,
+          "warmupTime": 0,
+          "cumulative_lookups": 0
+        },
+        "src": "$URL: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/search/FastLRUCache.java $",
+        "description": "Concurrent LRU Cache(maxSize=512, initialSize=512, minSize=460, acceptableSize=486, cleanupThread=false)",
+        "version": "1.0",
+        "class": "org.apache.solr.search.FastLRUCache"
+      }
+    }
+  ],
+  "responseHeader": {
+    "QTime": 5,
+    "status": 0
+  }
+}
+`
+
+var solrAdminMainCoreStatusExpected = map[string]interface{}{
+	"num_docs":      int64(168943425),
+	"max_docs":      int64(169562700),
+	"deleted_docs":  int64(619275),
+	"size_in_bytes": int64(247497521642),
+}
+
+var solrAdminCore1StatusExpected = map[string]interface{}{
+	"num_docs":      int64(7517488),
+	"max_docs":      int64(7620303),
+	"deleted_docs":  int64(102815),
+	"size_in_bytes": int64(1784635686),
+}
+
+var solrCoreExpected = map[string]interface{}{
+	"num_docs":     int64(168962621),
+	"max_docs":     int64(169647870),
+	"deleted_docs": int64(685249),
+}
+
+var solrQueryHandlerExpected = map[string]interface{}{
+	"15min_rate_reqs_per_second": float64(0),
+	"5min_rate_reqs_per_second":  float64(0),
+	"75th_pc_request_time":       float64(0),
+	"95th_pc_request_time":       float64(0),
+	"999th_pc_request_time":      float64(0),
+	"99th_pc_request_time":       float64(0),
+	"avg_requests_per_second":    float64(0),
+	"avg_time_per_request":       float64(0),
+	"errors":                     int64(0),
+	"handler_start":              int64(1482259270810),
+	"median_request_time":        float64(0),
+	"requests":                   int64(0),
+	"timeouts":                   int64(0),
+	"total_time":                 float64(0),
+}
+
+var solrUpdateHandlerExpected = map[string]interface{}{
+	"adds":                        int64(0),
+	"autocommit_max_docs":         int64(500),
+	"autocommit_max_time":         int64(900),
+	"autocommits":                 int64(0),
+	"commits":                     int64(0),
+	"cumulative_adds":             int64(0),
+	"cumulative_deletes_by_id":    int64(0),
+	"cumulative_deletes_by_query": int64(0),
+	"cumulative_errors":           int64(0),
+	"deletes_by_id":               int64(0),
+	"deletes_by_query":            int64(0),
+	"docs_pending":                int64(0),
+	"errors":                      int64(0),
+	"expunge_deletes":             int64(0),
+	"optimizes":                   int64(0),
+	"rollbacks":                   int64(0),
+	"soft_autocommits":            int64(0),
+}
+
+var solrCacheExpected = map[string]interface{}{
+	"cumulative_evictions": int64(0),
+	"cumulative_hitratio":  float64(0),
+	"cumulative_hits":      int64(55),
+	"cumulative_inserts":   int64(14),
+	"cumulative_lookups":   int64(69),
+	"evictions":            int64(0),
+	"hitratio":             float64(0.01),
+	"hits":                 int64(0),
+	"inserts":              int64(0),
+	"lookups":              int64(0),
+	"size":                 int64(0),
+	"warmup_time":          int64(0),
+}
-- 
GitLab