2015-01-05 22 views
7

Obecnie (wer. 1.4.2) można sprawdzić existence of an index (choć może nie w sposób idealny) i close and open an index. Nie widzę sposobu sprawdzenia, czy indeks jest otwarty lub zamknięty.Sprawdź, czy indeks elasticsearch jest otwarty lub zamknięty

Wywołanie status zwraca "IndexC zamknięty wyjątek", który spada bardziej w przypadku obsługi wyjątku zamiast informacyjny, którego szukam.

Jak to sprawdzić? Czy istnieje inny sposób wyszukiwania bez (być może) przekazywania już zamkniętego indeksu?

Odpowiedz

5

Zastosowanie GET /_cat/indices/my_index?v i masz coś takiego powrotem:

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 

i widać kolumnę status.

+0

nie wiedział o tych API kotów. O wiele ładniej dla ludzkich oczu. – tostasqb

+0

[Here's] (http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_cat_api.html) dobre podsumowanie dla cat api. –

3

Chociaż końcowy _cat jest miły dla ludzi, jeśli chcesz coś bardziej skrypt/program, przyjazny można zrobić coś takiego ...

wyszukiwania dla pojedynczego indeksu:

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

listy wszystkie indeksy :

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

co oznacza skrót "jq"? – tostasqb

+0

Nie mam pojęcia, ale JSON parsuje niesamowitość: http://stedolan.github.io/jq/ –

+0

Po prostu polecenie daje mi polecenie "jq: not found" – tostasqb

2

najbardziej zwięzły sposób, aby uzyskać odpowiedź otwierania/zamykania dla pojedynczego indeksu jest wykorzystanie kot indeksy API dla indeksu docelowej i ograniczają zwrócony kolumnę o ścią obejmują status:

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

Należy zwrócić albo open lub close. Używamy tej samej strategii dla zdrowia indeksu (czerwony/żółty/zielony).

2

Jest to odpowiedź podana w numerze this, która moim zdaniem jest bardziej zbliżona do oczekiwanych.

Można użyć klastra stanu API Zamiast:

GET _cluster/state/metadata/my_index 

lub nawet:

GET _cluster/state/metadata/my_index?filter_path=metadata.indices.*.state 
Powiązane problemy