2017-03-06 66 views
0

我想根据我的过滤规则对文档数量进行汇总和计数。使用弹性搜索API汇总过滤结果

我看着从他们的网站的API:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html

,并与该出来了:

{ "size": 0, 
     "aggregations": { 
      "messages": { 
       "filters":{ 
         "filters": { 
          "knowledge service": { "match": {"syslog_msg": "my-domain.com"}} 
          } 
         } 
         } 
        } 
} 

“syslog_msg” 可以包含诸如 “my-domain.com一些其他的价值。”

我得到的回应:

{ 
    "_scroll_id" : "some scroll id", 
    "took" : 89, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
}, 
"hits" : { 
"total" : 1000000, 
"max_score" : 0.0, 
"hits" : [ ] 
}, 
"aggregations" : { 
    "messages" : { 
    "buckets" : { 
     "knowledge service" : {"doc_count" : 12000} 
     } 
    } 
} 
} 

它似乎工作正常,但是当我跑的查询看12000条记录,其中一些没有精确匹配的字符串(在这种情况下,我-domain.com),我搜索。

例如,某些文档在syslog_msg中包含字符串“my”而不是“my-domain.com”。

如何更改查询,以便过滤我正在查找的字符串的完全匹配?


的解决办法是更换匹配match_phrase这将搜索并返回精确短语找到

回答