2016-07-17 198 views
8

Ho la seguente query Nest per eliminare tutti i documenti corrispondenti, piuttosto semplice, ma ottengo 400 richieste errate su di esso.Elasticsearch DeleteByQuery non funziona, ottenendo 400 richieste errate

var client = new ElasticClient(); 
     var request = new DeleteByQueryRequest<Type>("my-index") 
     { 
      Query = new QueryContainer(
        new TermQuery 
        { 
         Field = "versionId", 
         Value = "ea8e517b-c2e3-4dfe-8e49-edc8bda67bad" 
        } 
       ) 
     }; 
     var response = client.DeleteByQuery(request); 
     Assert.IsTrue(response.IsValid); 

Grazie per qualsiasi aiuto.

--------------- --------------- Aggiornamento

Richiesta corpo

{"query":{"term":{"versionId":{"value":"ea8e517b-c2e3-4dfe-8e49-edc8bda67bad"}}}} 

corpo di risposta

{"took":0,"timed_out":false,"_indices":{"_all":{"found":0,"deleted":0,"missing":0,"failed":0}},"failures":[]} 

query in plug-senso:

GET /my-index/type/_search 
{ 
    "query": { 

      "match": { 
      "versionId": "ea8e517b-c2e3-4dfe-8e49-edc8bda67bad" 
      } 

    } 
} 

Richiesta di risposta:

{ 
    "took": 3, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 116, 
     "max_score": 2.1220484, 
     "hits": [] 
... 
}} 

--------------- NEST QUERY --------------

DELETE http://localhost:9200/my-index/component/_query?pretty=true 
{ 
    "query": { 
    "term": { 
     "versionId": { 
     "value": "ea8e517b-c2e3-4dfe-8e49-edc8bda67bad" 
     } 
    } 
    } 
} 

Status: 200 
{ 
    "took" : 0, 
    "timed_out" : false, 
    "_indices" : { 
    "_all" : { 
     "found" : 0, 
     "deleted" : 0, 
     "missing" : 0, 
     "failed" : 0 
    } 
    }, 
    "failures" : [ ] 
} 
+0

Quale versione di Elasticsearch stai scegliendo come target e quale versione di NEST stai utilizzando? –

risposta

5

Sembra che si può utilizzare Elasticsearch 2.x insieme a NEST 2.x. Come parte di Elasticsearch 2.0, è necessario installare Delete by query was moved out of Elasticsearch core and into a separate plugin. È possibile installare il plugin utilizzando il seguente comando all'interno della directory bin elasticsearch

bin/plugin install delete-by-query 

Avvio del nodo di nuovo, eliminare dalla query dovrebbe ora funzionare come previsto.

Se è necessario ottenere ulteriori dettagli sul motivo per cui una richiesta non è riuscita, è possibile esaminare la risposta .DebugInformation per ottenere l'audit trail per la richiesta.

+0

Fantastico, ci proverò grazie mille. –

+0

Russ, appena provato dopo aver installato il plugin, ora response.IsValid è vero ma i dati non vengono cancellati. –

+0

Potrebbe essere coz Non sono esplicito sul nome del tipo nella query, ad eccezione della classe parametro generica. –