我正在重新索引索引,但每次尝试删除不存在的文档时都遇到了问题,所以我需要检查文档是否已经存在。
该方法刚刚在elasticsearch docs中解释。
我发现a question有一些有趣的代码,我已经尝试了
var docExists = client.DocumentExists<object>(d => d
.Index(indexname)
.Id(myId)
.Type("Abcdef"));
但编译器发出错误
无法将lambda表达式转换为'Nest.DocumentPath&lt; object&gt;'类型因为它不是委托类型
我想我的错误是因为问题是指NEST 1.x而我正在使用NEST 2.x.
我知道我可以做一个简单的查询,但我想知道是否有像ES doc-exists这样的直接方法。
由于
答案 0 :(得分:3)
DocumentExists
的签名在NEST 2.x中有所改变。
现在看起来像:
public IExistsResponse DocumentExists<T>(DocumentPath<T> document, Func<DocumentExistsDescriptor<T>, IDocumentExistsRequest> selector = null) where T : class
您的示例可以表示如下
client.DocumentExists<Document>(myId, d => d
.Index(indexname)
.Type("Abcdef"));
如果您对DocumentPath<T>
感到好奇,请阅读this NEST docs的伟大和平。
答案 1 :(得分:1)
我最终使用
client.DocumentExists(new DocumentExistsRequest(indexName, type.Name, myId))
因为我无法使用通用方法DocumentExists<T>(..)