ElasticSearch对整个字段进行聚合

Avi*_*hai 12 ruby statistics elasticsearch

如何编写一个考虑整个字段值而不是单个标记的ElasticSearch术语聚合查询?比如,我想通过城市名聚集,但下面的回报new,york,sanfrancisco作为单独的水桶,不new yorksan francisco的水桶预期.

curl -XPOST "http://localhost:9200/cities/_search" -d'
{
   "size": 0, 
   "aggs" : {
     "cities" : {
         "terms" : { 
            "field" : "city",
            "min_doc_count": 10
         }
     }
   }
}'
Run Code Online (Sandbox Code Playgroud)

Jet*_*die 16

您应该在映射中修复此问题.添加not_analyzed字段.如果还需要分析版本,则可以创建多字段.

"album": {
  "city": "string",
  "fields": {
    "raw": {
      "type": "string",
      "index": "not_analyzed"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在在city.raw上创建聚合


zho*_*jie 5

2018-02-11 更新, 现在我们可以.keyword根据这个按字段分组后使用语法

GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)