索引名称中的弹性搜索日期匹配不起作用

时间:2015-12-18 08:11:46

标签: elasticsearch

  • Elasticsearch:2.1
  • 时区:+0800
  • 索引:nginx-2015.12.18
  • 当前时间:2015-12-18 16:08

根据doc,以下查询将解析为nginx-2015.12.18

curl -XGET 'localhost:9200/<nginx-{now/d}>/_search'

但实际上它给出了

{"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"<nginx-now","index":"<nginx-now"}],"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"<nginx-now","index":"<nginx-now"},"status":404}

卷曲'localhost:9200 / _cat / indices?v'

  

⋊&GT; ~curl'localhost:9200 / _cat / indices?v'16:31:35

health status index              pri rep docs.count docs.deleted store.size pri.store.size 
yellow open   nginx                5   1         18            0    120.7kb        120.7kb 
yellow open   wx-data-2015.12.18   5   1          2            0      9.6kb          9.6kb 
yellow open   nginx-2015.12.18     5   1          5            0       33kb           33kb

1 个答案:

答案 0 :(得分:1)

事实证明,这是一个known issue,这就是@javanna所说的,

  

我们最初将此视为一个错误并修复它,但之后我们   发现修复程序引入了回归(#14177),这使我们成为了现实   退后一步。任何不应该用作路径的斜杠   uri中的分隔符应该被正确转义,并且尝试是错误的   并区分服务器端的不同斜杠   取决于它们周围的东西,启发式不会飞   (事实上​​它没有:))

     

我们将恢复初始修复,然后解决此问题   问题是转义网址中的'/',如下所示:curl -XGET   'localhost:9200/<logstash-{now%2Fd}>/animals/1'。那将是有效的   并且首先不需要任何修复。

我还必须逃离{},这对我ES 2.0

有用
curl -XGET 'localhost:9200/<nginx-\{now%2Fd\}>/_search'

这有帮助吗?