2015-10-13 16 views
5

Utworzono nową domenę AWS ElasticSearch do testowania. Obecnie używam ES na innym hoście i szukam przejścia na AWS.Nie można zamknąć indeksu ElasticSearch na AWS?

Jedna rzecz, którą muszę zrobić, to ustawić mapowanie (analizatory) na mojej instancji. Aby to zrobić, muszę "zamknąć" indeks, inaczej ES po prostu zgłosi wyjątek.

Ilekroć próbuję zamknąć indeks, choć, otrzymuję wyjątek od AWS:

Your request: '/_all/_close' is not allowed by CloudSearch. 

AWS ES documentation mówi specjalnie w tym celu w niektórych przypadkach:

curl -XPOST 'http://search-weblogs-abcdefghijklmnojiu.us-east-1.a9.com/_all/_close' 

nie mam znalazłem dokumentację, która mówi, dlaczego nie byłbym w stanie zamknąć moich indeksów na AWS ES, ani nie znalazłem nikogo, kto ma ten problem.

To także trochę dziwne, że mam domenę ElasticSearch, ale daje mi komunikat o błędzie CloudSearch, ponieważ uważałem, że są to różne usługi, choć przypuszczam, że jeden z nich jest zaimplementowany pod względem drugiego.

dziękuję!

+0

piękny stwierdzenie, czy skontaktować się z AWS bezpośrednio związana z tym problemem? – BMW

+0

BMW: Otrzymałem (nawet bardziej ogólny) błąd podczas próby wysłania postu na ich forum. : P –

Odpowiedz

0

Ponieważ zamykanie wszystkich indeksów jednocześnie jest niebezpieczne, może być domyślnie wyłączone w klastrze. Musisz upewnić się, że plik konfiguracyjny elasticsearch.yml nie zawiera to:

action.destructive_requires_name: true 

Można też ustawić to w pliku konfiguracyjnym i zrestartuj klaster, ale zdecydowanie odradzam tej ponieważ otwiera drzwi do wszelkiego rodzaju innych destrukcyjnych działań, jak na przykład kasowanie wszystkich swoich indeksów.

action.destructive_requires_name: false 

Co należy zrobić, zamiast jest tymczasowo zaktualizować ustawienia klastrowe wykorzystujące

curl -XPUT localhost:9200/_cluster/settings -d '{ 
    "persistent" : { 
     "action.destructive_requires_name" : false 
    } 
}' 

Następnie zamknij wszystkie indeksy

curl -XPOST localhost:9200/_all/_close 

A potem zresetować ustawienia do bezpieczniejszego wartości :

curl -XPUT localhost:9200/_cluster/settings -d '{ 
    "persistent" : { 
     "action.destructive_requires_name" : true 
    } 
}' 
+1

AWS ES jest usługą wyższego poziomu i nie zapewnia bezpośredniego dostępu do 'elasticsearch.yml'. Otrzymuję komunikat "ładunek nie jest dozwolony", gdy próbuję PUT do '/ _cluster/settings' w ten sposób. –

+0

Czy jesteś w stanie zamknąć przynajmniej jeden indeks przy użyciu '/ your_index/_close'? – Val

+0

Twoja odpowiedź dała mi pewien pomysł. Robię '.close (index = INDEX_NAME)' z mojej biblioteki klienta, ale wygląda na to, że z jakiegoś powodu uderza w przewód jako '/ _all/_close'.Tak więc spróbowałem 'curl -XPOST host/my_index/_close', a AWS informuje, że to" nie jest dozwolone przez CloudSearch ". Cerować. –

3

AWS Elasticsearch nie obsługuje operacji "close" w indeksach.

http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html

"Obecnie Amazon ES nie obsługuje Elasticsearch _close API"

+0

Tak, zmieniły dokumentację. Myślę, że ich dokumentacja i zespoły wdrożeniowe właściwie nie rozmawiają ze sobą. Nawet nieznajomej, nie ma zapisu o tej zmianie w Historii dokumentu. –

+1

Jeśli chcesz dodać mapowania, będziesz musiał ponownie zindeksować. Jest kilka dobrych artykułów na temat używania aliasów. Podstawowe kroki - utwórz alias do odczytu i alias zapisu. Punkt odczytuje alias do bieżącego indeksu. Utwórz nowy indeks z nowymi mapowaniami. Wpisz alias do nowego indeksu. Następnie skopiuj stary indeks do nowego indeksu (odczytaj z aliasu do odczytu, napisz, aby pisać alias). Wymaga to zmodyfikowania istniejącego kodu, aby zamiast niego używać aliasów. https://www.elastic.co/guide/en/elasticsearch/guide/current/reindex.html https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases .html – burn0050

Powiązane problemy