【发布时间】:2018-11-03 03:03:42
【问题描述】:
使用嵌套进行弹性搜索我试图从我的索引中删除确切数量的文档(我能找到的最旧的)。我的映射对象有一个 TimeStamp 字段。我设法完成这项工作的唯一方法是搜索这些文档,然后对每个命中运行 foreach 并将该命中的 ID 传递到删除 API 并一个一个删除它们:
var searchResponseAsc = client.Search<MyPersonalObject>(s => s.Sort(sd => sd.Ascending(e => e.TimeStamp)).Take(NumberOfDocumentsToBeDeleted));
foreach (IHit<MyPersonalObject> hit in searchResponseAsc.Hits) {
client.DeleteByQuery<MyPersonalObject>(dbq => dbq.Index(IndexName).Query(q => q.Ids(s => s.Values(hit.Id))));
}
有没有办法在大量搜索响应中调用删除 API,或者将搜索查询直接嵌套到删除查询中更好?
任何提示将不胜感激!
【问题讨论】:
-
您需要创建基于时间的索引,例如每日索引,然后使用 curator 删除旧索引
-
我在删除 APi 中没有看到这一点,您可以做的一件事是将要保留的数据重新索引到其他索引中,然后删除旧索引,在重新索引中您可以插入查询跨度>
标签: elasticsearch nest