【问题标题】:ElasticSearch query specifying an indexname using todays date使用今天日期指定索引名的 ElasticSearch 查询
【发布时间】:2018-01-15 09:22:15
【问题描述】:

我正在使用 logstash 为 ES 填充来自我们在多台机器上的实时服务的一些指标。 Logstash 每天都会创建一个新索引,我发现在不指定索引的情况下查询 ES 运行缓慢。 (我目前维持 5 天的指数)。如果我指定特定索引,例如今天

.es(index=logstash-2018.01.15, q= examplequery

它运行得非常快 有没有办法使用日期字段指定今天的索引?

例如

.es(index=logstash-'get date', q= examplequery

【问题讨论】:

    标签: elasticsearch logstash kibana timelion


    【解决方案1】:

    您可以使用查询来获取今天日期的索引:

     .es(index='<logstash-{now/d}>')
    

    一个有趣的读物,包含弹性搜索中可用的所有选项,以在索引名称中包含日期数学:

    https://www.elastic.co/guide/en/elasticsearch/reference/current/date-math-index-names.html

    【讨论】:

      【解决方案2】:

      通过查看语法,我猜您正在使用 Timelion 或使用查询字符串的东西。这里有一个很好的教程,其中包括指定索引模式:
      https://www.elastic.co/blog/timelion-tutorial-from-zero-to-hero
      在你的情况下,它会是

      .es(index=logstash-*, q= examplequery
      

      .es(index=logstash-2018.01.*, q= examplequery
      

      如果你需要今年一月并且索引模式是'logstash-YYYY.MM.dd'

      【讨论】:

      • 感谢您的回复。我正在使用 timelion 创建仪表板,我只想指定今天的索引。我已经测试过,这可以通过使用与您建议的语法类似的语法来加快速度,但也指定了日期。 ''.es(index=logstash-2018.01.15 *, q= examplequery'' 我想要一种方法来指定今天的日期并让它适用于一年中的每一天。上面的示例将搜索一月份的每个索引还是反应慢。
      • 您的意思是要将索引指定为变量吗?
      • 我找到了这些:discuss.elastic.co/t/timelion-how-generate-label-dynamically/… discuss.elastic.co/t/… 这对我来说表明您无法将当前日期传递给变量。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 2011-09-26
      相关资源
      最近更新 更多