2017-08-25 96 views
0

我试图做与Elasticsearch日期数学的日期范围查询,它不返回任何结果:Elasticsearch QUERY_STRING带有日期的数学

`query: { 
    bool: { 
     must: { 
      query_string: { 
       query: "created_at:[now-1m/d TO now/d+1d]", default_operator: "AND", analyzer: "my_text"} 
      } 
     } 
    } 
}` 

更改查询,以包括实际日期没有问题:“created_at: [2017年7月25日于2017年8月25日]”

我也尝试了解决方法由QUERY_STRING与范围查询相结合,但没有返回任何结果之一:

`query: { 
    bool: { 
     must: [ 
      {query_string: {query: "", default_operator: "AND", analyzer: "my_text"}}, 
      {range: {"created_at"=>{from: "now-1m/d", to: "now/d+1d"}}}] 
     } 
    } 
}` 

使用d吃的数学确实显示正确的计数AGGS:

`aggs: { 
    created_at: { 
     date_range: { 
      field: "created_at", keyed: true, ranges: [ 
       {from: "now/d", to: "now/d+1d", key: "Today"}, 
       {from: "now-1d/d", to: "now/d+1d", key: "In the last day"}, 
       {from: "now-7d/d", to: "now/d+1d", key: "In the last week"}, 
       {from: "now-1M/d", to: "now/d+1d", key: "In the last month"} 
      ] 
     } 
    } 
}` 

是否与Elasticsearch QUERY_STRING查询日期的数学工作?如果不是什么是正确的解决方法?

回答

0

我认为你有一个错字资本 - m应该M[now-1M/d TO now/d+1d](资本是正确的在你的最后一个例子,这就是为什么它在那里工作)。

+0

你是对的,但即使我把它改为M,它仍然返回0结果。 query:{query_string:{query:“created_at:[now-1M/d TO now/d + 1d]”,default_operator:“AND”,analyzer:“my_text”} ....我试着玩几个不同的30d和1Y的选项都可以工作,所以我猜这个月的数学计算有些问题。这两个工作:“created_at:[now-30d/d TO now/d + 1d]”,“created_at:[now-1Yd/d TO now/d + 1d]” – painbot