2016-06-01 7 views
1

Ich indexiere meinen Index neu, aber ich habe ein Problem festgestellt, wenn ich versuche, ein nicht existierendes Dokument zu löschen, also muss ich prüfen, ob das Dokument bereits existiert.Überprüfen, ob ein Dokument im Index vorhanden ist unter Verwendung von NEST

Der Ansatz ist nur in der elasticsearch docs erläutert.

Ich fand a question mit einigen interessanten Code, die ich bereits versucht

var docExists = client.DocumentExists<object>(d => d 
    .Index(indexname) 
    .Id(myId) 
    .Type("Abcdef")); 

Aber der Compiler gibt einen Fehler

Kann nicht Lambda-Ausdruck konvertieren Typ 'Nest.DocumentPath <Objekt>' weil es kein Delegiertyp ist

Ich nehme an, mein Fehler com weil die Frage sich auf NEST 1.x bezieht und ich NEST 2.x benutze.

Ich weiß, ich kann eine einfache Abfrage, aber ich möchte wissen, ob es einen direkten Weg wie ES doc-exists gibt.

Dank

+0

Welche Version von Nest verwenden könnte verwenden Sie? – bittusarkar

+0

@bittusarkar Elasticsearch 2.0.0, Nest 2.0.2 –

Antwort

3

Unterschrift des DocumentExists verändert ein wenig in NEST 2.x.

Im Moment sieht es so aus:

public IExistsResponse DocumentExists<T>(DocumentPath<T> document, Func<DocumentExistsDescriptor<T>, IDocumentExistsRequest> selector = null) where T : class 

Ihr Beispiel als

client.DocumentExists<Document>(myId, d => d 
    .Index(indexname) 
    .Type("Abcdef")); 

folgt ausgedrückt werden könnte Wenn Sie neugierig sind DocumentPath<T> bitte this großen Frieden von NEST docs lesen.

+0

Danke! Am Ende dieser Lösung stand 'client.DocumentExists (new DocumentExistsRequest (indexName, type.Name, myId))' ', da ich keine generische Methode verwenden konnte –

0

landete ich mit

client.DocumentExists(new DocumentExistsRequest(indexName, type.Name, myId)) 

, da ich nicht die generische Methode DocumentExists<T>(..)

Verwandte Themen