Elasticsearch筛选查询不起作用

the*_*eye 3 elasticsearch

我试图获得一个非常基本的过滤查询来使用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"

任何帮助表示赞赏.

And*_*fan 7

如果您的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)