小编sco*_*ott的帖子

ElasticSearch从数组字段中过滤聚合

我试图对数组中的值进行聚合,并过滤前缀返回的存储区.不确定这是否可行或我是否滥用过滤器桶.

3份文件:

{ "colors":["red","black","blue"] }
{ "colors":["red","black"] }
{ "colors":["red"] }
Run Code Online (Sandbox Code Playgroud)

目标是获取具有以字母B开头的颜色的文档计数:

{
  "size":0,
  "aggs" : {
    "colors" : {
      "filter" : { "prefix" : { "colors" : "b" } },
      "aggs" : {
        "top-colors" : { "terms" : { "field":"colors" } }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,回来的结果包括Red.显然因为带有红色的文档仍然匹配过滤器,因为它们也有蓝色和/或黑色.

"aggregations": {
"colors": {
  "doc_count": 2,
  "top-colors": {
    "buckets": [
      {
        "key": "black",
        "doc_count": 2
      },
      {
        "key": "red",
        "doc_count": 2
      },
      {
        "key": "blue",
        "doc_count": 1
      }
    ]
  }
}
} …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

7
推荐指数
1
解决办法
4652
查看次数

标签 统计

elasticsearch ×1