Elasticsearch以纪元格式过滤带有日期的文档



我在ES中的文档包含一个字段,该字段以epoch格式存储日期值,如下所示:

"received": 1521055535062

我正在尝试构建一个查询,在该查询中,我可以根据考虑或不考虑 UTC 时差的特定日期过滤文档。

由于我在ES中有超过一百万条记录,我想要一种方法来确定这些文档中有多少属于特定日期。

您要查找的是具有所需日期格式规范的日期范围查询。以下内容应返回 2018 年第一天收到的文档

GET _search
{
"query": {
"range" : {
"received" : {
"gte": "01/01/2018",
"lt": "01/02/2018",
"format": "dd/MM/yyyy"
}
}
}
}

有关详细信息,请参阅此处 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html

只需添加一段 Java 代码(使用范围查询)。从这个问题来看,不清楚应该用哪种语言编写查询,但如果它是用 Java 编写的,以下代码片段应该会有所帮助:

BoolQueryBuilder boolQuery = new BoolQueryBuilder();
Date asOfDate = new Date(System.currentTimeMillis() - historySeconds * 1000);
boolQuery.must(QueryBuilders.rangeQuery("created").from(asOfDate).includeLower(true));

最新更新