2015-01-05 20 views
7

Attualmente (v. 1.4.2) è possibile controllare lo existence of an index (sebbene forse non idealmente), e allo close and open an index. Non vedo un modo per verificare se l'indice è aperto o chiuso.Verificare se l'indice elasticsearch è aperto o chiuso

La chiamata status restituisce una "IndexClosedException" che ricade maggiormente in un caso di gestione delle eccezioni anziché in quello informativo che sto cercando.

Come si controlla? O c'è un altro modo per fare una ricerca senza (possibilmente) passare un indice già chiuso?

risposta

5

Usa GET /_cat/indices/my_index?v e si ottiene qualcosa di simile a questo ritorno:

health status index  pri rep docs.count docs.deleted store.size pri.store.size 
yellow open my_index 5 1   2   0  5.3kb   5.3kb 

e si può vedere la colonna status.

+0

non sapeva di queste API gatto. Molto più bello per gli occhi umani. – tostasqb

+0

[Here's] (http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_cat_api.html) un buon riassunto per cat api. –

3

Mentre l'endpoint _cat è bello per l'uomo, se volete qualcosa di più script/programma amichevole che si può fare qualcosa di simile ...

Lookup per un unico indice:

curl -GET 'http://es-host:9200/_cluster/state' | jq '.metadata.indices["index_name"].state' 

Lista tutti gli indici :

curl -GET 'http://es-host:9200/_cluster/state' | jq '.metadata.indices | to_entries | .[] | {index: .key, state: .value.state}' 
+0

cosa significa "jq"? – tostasqb

+0

Non ho idea, ma è JSON che analizza la sorprendentezza: http://stedolan.github.io/jq/ –

+0

È solo che il comando mi dà un 'jq: comando non trovato' – tostasqb

2

il modo più sintetico per ottenere una risposta chiudere aperto/per un singolo indice è utilizzare il gatto indici API per l'indice di destinazione e limitare la colonna restituito o olo includere status:

curl http://localhost:9200/_cat/indices/some_index?h=status 

Ciò dovrebbe restituire sia open o close. Usiamo questa stessa strategia per la salute dell'indice (rosso/giallo/verde).

2

Questa è la risposta fornita nel numero this, che a mio avviso si avvicina di più a quanto previsto.

È possibile utilizzare l'API stato del cluster invece:

GET _cluster/state/metadata/my_index 

o anche:

GET _cluster/state/metadata/my_index?filter_path=metadata.indices.*.state 
Problemi correlati