如何查询ElasticSearch中两个日期之间的索引?

时间:2018-02-17 13:44:41

标签: java elasticsearch

我的索引名称带有<div [class]="mobileQuery.matches ? 'text-red' : 'text-blue'"> I turn red on mobile mode </div> 模式。

假设我想查询日期.text-red { color: red; } .text-blue { color: blue; } myindex-YYYY.MM.dd之间的索引。

日期数学功能不足以完成此任务。我可以在这些日期之间生成索引名称,但我的请求太长了。并且在某些情况下,它可能超过2017.03.10请求的最大长度。

有没有办法在不生成索引名的情况下完成此任务?

2 个答案:

答案 0 :(得分:0)

您可以在所有索引中添加一个日期字段,该字段具有与索引名称相同的语义(如果它尚不存在)。然后你可以简单地在该日期字段上使用范围查询来过滤感兴趣的范围,查询像myindex *这样的别名:

GET my_alias/_search
{
    "query": {
        "range" : {
            "timestamp" : {
                "gte": "start_date", 
                "lte": "end_date"
            }
        }
    }
}

答案 1 :(得分:0)

您不能将索引名称作为数据使用,因此您不能在索引名称本身上使用过滤器。但是,您可以使用通配符缩小查询范围,例如2017.03。*将为您提供来自march的所有idex,并且查询过滤器必须包含更多精细日期标准。