【问题标题】:Elasticsearch count terms ignoring spaces忽略空格的 Elasticsearch 计数术语
【发布时间】:2014-08-03 01:44:11
【问题描述】:

使用 ES 1.2.1

我的聚合

{
    "size": 0,
    "aggs": {
        "cities": {
            "terms": {
                "field": "city","size": 300000
            }
     }
 }

}

问题是某些城市名​​称中有空格并单独聚合。

例如洛杉矶

{
    "key": "Los",
    "doc_count": 2230
},
{
    "key": "Angeles",
    "doc_count": 2230
},

我认为它与分析仪有关?我会用哪一个来不分割空间?

【问题讨论】:

    标签: elasticsearch aggregation analyzer


    【解决方案1】:

    对于您要对其执行聚合的字段,我建议您使用关键字分析器或根本不分析该字段。来自关键字分析器文档:

    将整个流“标记”为单个标记的关键字类型分析器。这对于邮政编码、ID 等数据很有用。请注意,在使用映射定义时,将字段简单地标记为 not_analyzed 可能更有意义。

    但是,如果您仍想对字段执行分析以包含其他搜索,请考虑使用 ES 1.x 的字段设置,如field/multi_field documentation 中所述。这将允许您拥有一个用于搜索的字段值和一个用于聚合的值。

    【讨论】:

    • 所以如果我得到了正确的多字段文档,那么我的聚合就变成了... "terms":{"field": "city.raw"} 正确吗?
    • 像魅力一样工作!谢谢!
    • 是的,如果将现有字段映射更改为 multi_field,则需要重新索引以反映此更改,因为 multi_field 创建是索引时间操作。
    【解决方案2】:

    有两种方法可以解决这个问题。

    1. not_analyzed 方式 - 但这不会考虑不同的资本和小案例
    2. 关键字分词器方式 - 在这里我们可以映射不同的术语 不同的情况。

    blog 中说明了这两个带有工作代码示例的概念。

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 2023-02-25
      • 1970-01-01
      相关资源
      最近更新 更多