2015-09-30 15 views
8

Ecco la mia richiesta:elasticsearch api indice di massa tramite resto endpoint

POST /_bulk 
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } } 
{"firstname":"first_name1","lastname":"last_name1"}, 
{"firstname":"first_name2","lastname":"last_name2"}, 
{"firstname":"first_name3","lastname":"last_name3"}} 

Ecco l'errore:

{ "error": "IllegalArgumentException[Malformed action/metadata line [3], expected START_OBJECT or END_OBJECT but found 

[VALUE_STRING]]", "status": 500 }

In sostanza, ogni documento è { "cognome": ___, "cognome": ____} Non voglio avvolgerli in un campo genitore. Cosa mi manca di base?

+0

questo è anche un utile, collegamento: https://discuss.elastic.co/t/ bulk-indexing-document-without-providing-id-using-php-api/25521/5 – phirschybar

risposta

12

Stai semplicemente manca una linea d'azione per il secondo e terzo documenti, tenta in questo modo:

POST /_bulk 
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } } 
{"firstname":"first_name1","lastname":"last_name1"} 
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "2" } } 
{"firstname":"first_name2","lastname":"last_name2"} 
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "3" } } 
{"firstname":"first_name3","lastname":"last_name3"} 
+3

The [Do not Repeat Yourself] (https://www.elastic.co/guide/en/elasticsearch/guide/current /bulk.html#_don_8217_t_repeat_yourself) sezione suggerisce un modo per evitare di ripetere il valore '' '_ _index''' e' '_type''' per tutto il tempo. Tuttavia, si ricorda che * l'azione * deve essere ancora specificata per ciascun documento. –

+0

Ovviamente, è sempre meglio specificare l'indice e il tipo direttamente nell'URL, se possibile. Questo era solo per illustrare l'azione _bulk – Val

+1

sì. In precedenza, ho avuto un'impressione sbagliata quando ho letto il documento e ho pensato che fornire * l'azione * solo all'inizio del file sarebbe stato utile allo scopo. Ho imparato che non è il caso più difficile. –

Problemi correlati