elasticsearch 删除所有搜索响应文档,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 删除所有搜索响应文档,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 删除所有搜索响应文档

elasticsearch 删除所有搜索响应文档,elasticsearch,nest,elasticsearch,Nest,使用nest for elasticsearch,我试图从索引中删除确切数量的文档(我能找到的最早的文档)。我的映射对象有一个时间戳字段。我实现这一目标的唯一方法是搜索这些文档,然后在每次命中时运行foreach,并将命中的ID传递到delete API中,然后逐个删除它们: var searchResponseAsc = client.Search<MyPersonalObject>(s => s.Sort(sd => sd.Ascending(e => e.Ti

使用nest for elasticsearch,我试图从索引中删除确切数量的文档(我能找到的最早的文档)。我的映射对象有一个时间戳字段。我实现这一目标的唯一方法是搜索这些文档,然后在每次命中时运行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))));
}
var searchResponseAsc=client.Search(s=>s.Sort(sd=>sd.singressing(e=>e.TimeStamp)).Take(NumberOfDocumentsToBeDeleted));
foreach(IHit在searchResponseAsc.Hits中命中){
DeleteByQuery(dbq=>dbq.Index(IndexName).Query(q=>q.Id(s=>s.Values(hit.Id)));
}
有没有一种方法可以对大量搜索响应调用deleteapi,或者更好地将搜索查询直接嵌套到delete查询中


任何提示都将不胜感激

您可以在API中嵌入Elasticsearch查询:


你需要建立基于时间的索引,如每日索引,然后使用curator删除旧索引我在delete APi中看不到这一点,你可以做的一件事是将要保留的数据重新索引到其他索引中,然后删除旧索引,在重新索引中你可以插入查询
POST twitter/_delete_by_query
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}