Elasticsearch以日历格式过滤日期的文档

时间:2018-04-16 19:33:22

标签: elasticsearch

r"\1"中的文档包含一个以ES格式存储日期值的字段,如下所示:

epoch

我正在尝试构建一个查询,我可以根据特定日期过滤文档,无论是否考虑UTC时差。

由于我在"received": 1521055535062中有超过一百万条记录,因此我想了解一下这些文档中有多少属于特定日期。

2 个答案:

答案 0 :(得分:1)

您要查找的是具有所需日期格式规范的日期范围查询。以下内容应返回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

答案 1 :(得分:1)

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

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