使用nest进行Elasticsearch我正在尝试从索引中删除确切数量的文档(我可以找到的最旧的文档)。我的映射对象有一个TimeStamp字段。我设法完成这项工作的唯一方法是搜索这些文档,然后在每个匹配项上运行一次foreach,并将该匹配项的ID传递到delete 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))));
}
是否可以在大量搜索响应中调用delete API,或者甚至更好地将搜索查询直接嵌套到delete查询中?
任何提示将不胜感激!
答案 0 :(得分:1)
您可以在delete by query API中嵌入Elasticsearch搜索查询:
POST twitter/_delete_by_query
{
"query": {
"match": {
"message": "some message"
}
}
}