搜索/计算和聚合不同的术语

时间:2015-01-21 14:03:33

标签: elasticsearch

我目前正在查询如下:

"query": {
  "query_string": {
    "query": "direction:OUTGOING AND prot:https OR prot:http OR prot:smtp AND unixtime: [1410812748000 TO 1416899148000]",
    "fields": [ "direction", "unixtime"]
  }

我需要的是对搜索协议的所有发现的总结(在本例中为http,https和smtp):

http: 5434,
https: 32,
smtp: 18

我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:0)

使用facet解决它

curl "localhost:9200/myindex/_search?pretty=true&search_type=count" -d '{
 "query":
{
     "query_string" :
     {
          "query": "proto:http OR proto:https OR proto:smtp"
     }
 },
 "facets": {
     "hits": {
         "terms": {
             "field": "proto"
         }
     }
  }
}'

答案 1 :(得分:0)

由于不推荐使用facet,因此使用聚合是可行的方法。

curl "localhost:9200/myindex/_search?pretty=true&search_type=count" -d '{
   "query":
   {
       "query_string" :
       {
           "query": "proto:http OR proto:https OR proto:smtp"
       }
   },
   "aggs": {
      "hits": {
         "terms": {
         "field": "proto"
     }
   }
 }
}'