我正在尝试进行count
查询,以便返回在过去10分钟内登录系统失败的次数。我创建了这个查询:
{
"term": {
"success":false
},
"range": {
"_timestamp": {
"gt": "now-10m"
}
}
}
但是,这会在任何时候返回所有不成功的尝试,而忽略我的查询中的range
过滤器。我正确构建此查询吗?当我使用术语和范围search
时,查询有效。
换句话说,上述查询和curl -XGET localhost:9200/application/_count
的输出是相同的(我只测试过不成功的尝试)。
答案 0 :(得分:1)
尝试使用search_type参数而不是使用countAPI。这实际上是首选:
curl -XGET localhost:9200/application/_search&search_type=count -d'{
query:....
}'
文档: http://www.elasticsearch.org/guide/reference/api/search/search-type/
答案 1 :(得分:0)
range
是一个过滤器,因此我认为您必须创建一个filtered
查询才能正确考虑它:
{
"filtered": {
"query": {
"term": {
"success":false
},
},
"filter: {
"range": {
"_timestamp": {
"gt": "now-10m"
}
}
}
}
}