2015-04-21 15 views
5

Sto tentando di acquisire un elenco di tutti gli indici e le loro dimensioni in modo da acquisire le informazioni utilizzando il servizio $ http di Angular e quindi scorrere le informazioni utilizzando preferibilmente la ripetizione ng con qualcosa di simile:ElasticSearch Ottieni nomi indice e dimensioni archivio

<ul ng-repeat="elsindex in elsIndexHttpResponse"> <li>{{elsindex.name}}:{{elsindex.size}}</li> </ul>

La cosa più vicina che ho trovato è questo: http://localhost:9200/_cat/indices?h=index,store.size

eccezione:

a. le sue risposte non sono in json, quindi è facile fare riferimento usando la ripetizione ng <li> elementi non funzioneranno; e

b. Vorrei, se possibile, ottenere che l'output della dimensione rispecchi le stesse dimensioni dell'unità (come i byte).

Se questo comporta qualcosa di complicato, sarei grato per i suggerimenti su dove concentrarmi.

Sto usando elasticsearch v1.4.4

Molte grazie

risposta

8

Si può provare come http://localhost:9200/_stats/index,store. Darà anche ulteriori informazioni. Se vuoi vedere su un browser, puoi usare http://localhost:9200/_stats/index,store?pretty per ottenere un risultato migliore. Guarda il json di uscita per utilizzare solo i dati che ti servono. Fare riferimento a indices stats api.

+0

Grazie per la risposta. Ho anche trovato queste chiamate REST. Il problema è che non risponde con un set di dati che può essere usato per ottenere il nome di indice (almeno non in ogni caso con cui ho familiarità). Sembra che esista un livello superiore: _shards con tre figli: totale, _all e indici. Ma gli indici sono appena nominati. Non sono distinti dal "nome": "valore" e penso che sia la ragione per cui non riesco a raggiungerli usando elsIndex.name (o qualcosa di simile - visto come sono incapsulati da oggetti _shards e indici). – Gregg

+0

Grazie ancora per la risposta. Sto marcando accettato dato che fornisce tutti i dati necessari.La ragione per cui mi ci è voluto così tanto tempo è che ho cercato di cercare una risposta diversa - una che cattura una serie di oggetti JSON non un oggetto JSON di oggetti JSON. Volevo questo perché non ho capito come analizzare un oggetto di oggetti. Sono appena arrivato a scoprire che i dati che desidero sono raggiungibili utilizzando alcune affermazioni come: '$ http.get (" http: // localhost: 9200/_stats/index, store ")', '.success (funzione (data) {',' $ scope.elsIndexHttpArray = Object.getOwnPropertyNames (data.indices); ' – Gregg

10

Mi rendo conto che questa domanda è già disponibile, ma volevo aggiungere i miei 2 centesimi.

http://localhost:9200/_cat/indices?h=index,store.size&byte = k & format = json

sarebbe effettivamente ottenere esattamente quello che avete richiesto:

  • format = json -> formatta l'output a JSON
  • byte = k -> restituisce la dimensione in kilobyte

informazioni per quanto riguarda l'unità di misura è stato recuperato da cat APIs doc

Le informazioni riguardanti il ​​formato è stato un tentativo di Sense, che ha alcune caratteristiche di auto-completamento molto utile per rilevare tali opzioni.

Cheers.

Problemi correlati