2017-03-06 60 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這將搜索並返回精確短語找到

回答