我有唯一的文档ID(跨所有类型),我想检查elasticsearch索引中已存在哪个文档。我尝试搜索
var duplicateCheck = _elasticClient
.MultiGet(m => m.GetMany<object>(notices.Select(s => s.Id)).Fields("Id"));
但它返回错误的结果 - 每个文档都将found属性设置为false。
更新 这里有解决方法
var exisitngDocIds = _elasticClient.Search<ZPBase>(s => s
.AllTypes()
.Query(q => q.Ids(notices.Select(z=>z.Id)))
.Fields("Id")
.Take(notices.Count)
);
notices = notices.Where(q => !exisitngDocIds.Hits.Any(s => s.Id == q.Id)).ToList();
答案 0 :(得分:0)
从Multi Get API文档中我意识到您可以使用类似于以下代码的方法来解决您的问题:
var response = _elasticClient.MultiGet(m => m
.Index(MyIndex)
.Type("")
.GetMany<ZPBase>(noticeIds));
请注意以Type
传递的空字符串。