2017-05-08 78 views
0

这应该很容易。如何遍历ElasticSearch索引中的每个对象?

我插入了一些记录到ElasticSearch并已精练的文档,但我似乎无法找到一种方法来简单地采取指数和遍历它的Node.js

我不对Elastic有很多经验,所以一直很沮丧。

该列表中的某些项目需要在10分钟内或多或少地进行修剪,否则数据库只会增长并增长。我想要一个单独的任务来做到这一点。

+0

如果你知道哪些项目需要修剪,你并不需要通过整个索引进行迭代,你可以简单地使用[按查询API删除](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html) – Val

+0

@Val如何通过日期比较来做到这一点?任何日期早于'new Date()'的日期都应该被删除。看起来这只是API示例中的一个直接匹配 - 有更多吗? –

回答

1

您可以在您的通话delete by query使用range query实现你想要的:

POST your_index/_delete_by_query 
{ 
    "query": { 
    "range" : { 
     "date_field" : { 
      "lt" : "2017-05-08T00:00:00.000Z" 
     } 
    } 
    } 
} 
+0

很棒的回答。愚蠢的问题:如何将数字UTC时间戳变成“YYYY-MM-DDT00:00:00.000Z”格式? –

+0

您也可以使用数字时间戳而不是格式化日期。 – Val