NEST MultiGet搜索所有可能的类型?

时间:2016-01-06 15:57:39

标签: elasticsearch nest

我有唯一的文档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();

1 个答案:

答案 0 :(得分:0)

Multi Get API文档中我意识到您可以使用类似于以下代码的方法来解决您的问题:

var response = _elasticClient.MultiGet(m => m
                    .Index(MyIndex)
                    .Type("")
                    .GetMany<ZPBase>(noticeIds));

请注意以Type传递的空字符串。