如何使用Query DSL进行Elasticsearch聚合在kibana中编写搜索查询

时间:2015-06-15 12:30:14

标签: elasticsearch querydsl kibana-4

我正在处理ELK堆栈以处理Apache访问日志。花了很多时间了解查询DSL格式,以便可以编写更复杂的查询。目前我正面临着在kibana界面中运行查询的问题,但是当从命令行使用curl发布时,相同的查询工作正常。

Kibana版本:4.1.0

Elasticsearch版本:1.6.0

Java:1.8.0_45

使用curl(工作):

curl -XGET http://localhost:9200/cars/transactions/_search?search_type=count -d '{
  "aggs" : { 
    "colors" : { 
      "terms" : {
        "field" : "color" 
      }
    }
  }
}

来自here的已使用数据。

使用kibana(不工作):

{ "aggs" : { "colors" : { "terms" : { "field" : "color" } } } }

错误:

  

org.elasticsearch.index.query.QueryPassingException:[。kibana]没有为[aggs]注册查询

以下是我在kache中使用查询DSL在apache访问日志数据上成功运行的一些查询:

  • {"filtered":{"filter":{"bool":{"must":{"terms":{"verb":["get"]}}}}}}
  • {"filtered":{"filter":{"bool":{"must_not":{"terms":{"agent":["crawler","spider","nagios"]}}}}}}

我已经搜索了谷歌几个小时,但没有运气。

1 个答案:

答案 0 :(得分:1)

我不确定您是否可以这样做,因为Discovery部分已经使用了时间戳聚合。

你能解释一下你想做什么吗?有一些方法可以在可视化中添加客户聚合。如果在可视化文件中打开聚合的高级部分,则可以看到输入包含其他聚合或其他参数的json的功能。

如果你给我一个你想要做的事情的例子我可以尝试帮助 - 你给出的例子可以用Kibana UI轻松完成。