2015-10-13 1 views
5

Ho creato un nuovo dominio AWS ElasticSearch, per i test. Io uso ES su un host diverso in questo momento e sto cercando di passare ad AWS.Impossibile chiudere l'indice ElasticSearch su AWS?

Una cosa che devo fare è impostare la mappatura (analizzatori) sulla mia istanza. Per fare ciò, ho bisogno di "chiudere" l'indice, altrimenti ES solleverà un'eccezione.

Ogni volta che provo a chiudere l'indice, però, ottengo un'eccezione da AWS:

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

Il AWS ES documentation dice specificamente per fare questo in alcuni casi:

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

non ho ho trovato documentazione che dice perché non sarei in grado di chiudere i miei indici su AWS ES, né ho trovato nessun altro che abbia questo problema.

È anche un po 'strano che io abbia un dominio ElasticSearch, ma mi sta dando un messaggio di errore di CloudSearch, poiché pensavo che si trattasse di servizi diversi, anche se suppongo che uno sia implementato in termini dell'altro.

grazie!

+0

bel risultato, hai contattato direttamente AWS per questo problema? – BMW

+0

BMW: Ho ricevuto un errore (ancora più generico) durante il tentativo di postare nei loro forum. : P –

risposta

0

Poiché chiudere tutti gli indici contemporaneamente è un'azione pericolosa, è forse disabilitato per impostazione predefinita sul cluster. È necessario assicurarsi che il file di configurazione elasticsearch.yml non contiene questo:

action.destructive_requires_name: true 

è possibile impostare questo nel file di configurazione e riavviare il cluster, ma io vivamente sconsigliato che dal momento che questo apre la porta a tutti i tipi di altre azioni distruttive, come eliminare tutti i tuoi indici contemporaneamente.

action.destructive_requires_name: false 

Che cosa si dovrebbe fare, invece è quello di temporaneamente aggiornamento delle impostazioni cluster utilizzando

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

Quindi chiudere tutti i vostri indici

curl -XPOST localhost:9200/_all/_close 

e quindi reimpostare le impostazioni ad un valore più sicuro :

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

AWS ES è un servizio di livello superiore e non fornisce accesso diretto a 'elasticsearch.yml'. Ricevo un errore "payload non è permesso" quando provo a PUT a '/ _cluster/settings' in questo modo. –

+0

Sei almeno in grado di chiudere un singolo indice usando '/ your_index/_close'? – Val

+0

La tua risposta mi ha dato un'idea. Sto facendo '.close (index = INDEX_NAME)' dalla mia libreria client, ma sembra che stia colpendo il filo come '/ _all/_close' per qualche motivo.Così ho provato a 'curl -XPOST host/my_index/_close', e AWS segnala che questo" non è consentito da CloudSearch ". Darn. –

3

AWS Elasticsearch non supporta l'operazione "close" sugli indici.

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

"Attualmente, Amazon ES non supporta l'API _close elasticsearch"

+0

Sì, hanno cambiato la documentazione. Immagino che i loro team di documentazione e implementazione non si parlino effettivamente. Anche estraneo, non c'è traccia di questo cambiamento nella cronologia del documento. –

+1

Se si desidera aggiungere mappature, è necessario reindicizzare. Ci sono alcuni buoni articoli sull'utilizzo di alias per farlo. Passaggi di base: crea un alias di lettura e un alias di scrittura. Il punto ha letto l'alias nell'indice corrente. Crea un nuovo indice con nuove mappature. Point scrive alias al nuovo indice. Quindi copia il vecchio indice in un nuovo indice (leggi da alias di lettura, scrivi per scrivere alias). Ciò comporta invece la modifica del codice esistente per utilizzare gli alias. https://www.elastic.co/guide/en/elasticsearch/guide/current/reindex.html https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases .html – burn0050