我试图获得一个非常基本的过滤查询来使用Elasticsearch.我有一个logstash索引,它有多个网络流量日志条目.我试图根据HTTP请求类型 - GET进行过滤.这是我过滤的查询看起来像...
curl -XGET "http://<myhost>:9200/<myindex>/_search?pretty" -d '
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {"verb":"GET"}
}
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
这似乎与语法上的文档匹配, http://www.elasticsearch.com/guide/en/elasticsearch/guide/current/_combining_queries_with_filters.html
但我得到0次点击.具有完全匹配语法的相同查询有效.我有成千上万的这样的消息,其中"动词":"GET"
任何帮助表示赞赏.
如果您的verb字段已使用默认分析器编制索引,则很可能最终将其编入索引为小写:"get"而不是"GET","delete"而不是"DELETE".
term过滤只是获取过滤后的值,GET在您的查询中,它不会分析它(这是它的工作原理).所以,基本上,你正在寻找价值GET在包含文件清单get,delete,post等.
话虽这么说,你实际上需要寻找较低的价值:
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {"verb":"get"}
}
} } } }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |