2016-06-01 2 views
1

インデックスを再インデックスしていますが、存在しないドキュメントを削除しようとすると問題が発生するため、ドキュメントが既に存在するかどうかを確認する必要があります。NESTを使用してインデックス内にドキュメントが存在するかどうかを調べる

このアプローチは、ちょうどelasticsearch docsで説明されています。

私はすでに

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

を試してみました。しかし、コンパイラは「Nest.DocumentPath <オブジェクト>」を入力するラムダ式を変換できませんエラーに

を与えているいくつかの興味深いコード、とa questionを見つけましたデリゲートタイプではないので、

私は私のエラーcomなぜなら質問はネスト1.xを指し、ネスト2.xを使用しているからです。

私は単純なクエリを実行できますが、ES doc-existsのような直接的な方法があるかどうかを知りたいと思います。 DocumentExists

+0

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

を使用して終了? – bittusarkar

+0

@bittusarkar Elasticsearch 2.0.0、Nest 2.0.2 –

答えて

3

署名がNEST 2.xのに少し変更

おかげ

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

を次のようにNESTドキュメントのthis偉大な平和をお読みくださいDocumentPath<T>興味がある場合はあなたの例では表現することができ

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

:よう

今それが見えます。

+0

ありがとう!私は一般的なメソッドを使用することができなかったので、 'client.DocumentExists(new DocumentExistsRequest(indexName、type.Name、myId))'を使ってこのソリューションを完成させました –

0

私はジェネリックメソッドを使用することができなかったとして、私はあなたが使用している巣のバージョンは何DocumentExists<T>(..)

関連する問題