【问题标题】:ElasticSearch terms aggregation on tokenized field标记化字段上的 ElasticSearch 术语聚合
【发布时间】:2015-03-05 03:16:10
【问题描述】:

当我对字符串字段(使用空格标记器)进行术语聚合时,我有每个单词(标记)的结果,但我需要整个字符串的结果。 如何对字符串字段(如术语)进行聚合,但按整个字符串而不是令牌分组输出?

我已经看到了这个解决方案: ElasticSearch term aggregation Terms aggregation based on unique key 但它们基于关键字标记器

我不能使用关键字标记器,因为我不想在索引时应用停用词过滤器

【问题讨论】:

  • 发布您已经尝试过的内容(映射、查询、数据样本、期望)。

标签: elasticsearch aggregation


【解决方案1】:

我刚遇到同样的问题,来这里寻找解决方案。

然后我才恍然大悟。有一个 .raw (未分析的)字段,它有效。解决方案就是使用它。

所以聚合来自:

{
  "aggs": {
    "keys": {
      "terms": {
        "size": 0,
        "field": "key"
}}}}}

到:

{
  "aggs": {
    "keys": {
      "terms": {
        "size": 0,
        "field": "key.raw"
}}}}}

【讨论】:

  • 这仅在您将字段设置为原始字段时才有效。
  • 至少在我正在运行的 ELK 堆栈版本中,这是默认设置。
  • 它在没有 key.raw 的情况下对我有用,我不得不重新创建索引,我猜我的映射之前没有定义。我赞成你的回答。
  • 谢谢。这有点令人困惑——为什么你需要 .raw 是因为在分析时可能会有键被破坏。就我而言,它们的格式为 "AAAA-BBB-CCC" 。我无法使用分析的字段查询它们的键,但 .raw 可以解决问题。
猜你喜欢
  • 1970-01-01
  • 2014-05-12
  • 2018-10-18
  • 1970-01-01
  • 2014-07-09
  • 2016-01-22
  • 1970-01-01
  • 2021-06-06
  • 2021-06-06
相关资源
最近更新 更多