具有文本类型映射的elasticsearch聚合字段

时间:2019-06-04 09:07:32

标签: elasticsearch elasticsearch-aggregation

我正在尝试汇总具有type text的字段。

映射设置:

"Group":{"type":"text"}

并查询:

{
    "query": {
        "term": {
            "request_id": 22
        }
    },
    "size": 0,
    "aggs": {
        "sets": {
            "terms": {"field": "Group.keyword"}
        }
    }
}

这将得到空结果:

"hits": {
    "total": 7463,
    "max_score": 0,
    "hits": []
},
"aggregations": {
    "sets": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": []
    }
}

如果没有.keyword,则会得到illegal_argument_exception .. reason: ... alternatively use a keyword field instead.

此外,Group字段中的值仅为Grp1Grp2

如何基于这两个值聚合集合?

1 个答案:

答案 0 :(得分:2)

将映射更新为:

"Group": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword"
      }
    }
  }

在映射中进行了上述更改之后,重新索引文档,然后可以使用Group.keyword

如果您永远不想在“组”字段的值上进行全文搜索,则应将其保留为关键字。

"Group":{"type":"keyword"}

在这种情况下,您可以在Group字段本身上进行汇总。