首页 > 解决方案 > Elasticsearch - 使字段可聚合但不可搜索

问题描述

我的 elasticsearch 数据有大量不需要搜索的字段。但我想得到像百分位数、中位数、计数、平均值这样的聚合。等在这​​些领域。

有没有办法禁用字段的可搜索性但让它仍然可以聚合?

标签: elasticsearch

解决方案


默认情况下,大多数字段都已编入索引,因此可搜索。如果您想让一个字段不可搜索,您只需将其index参数设置为false和。根据弹性文档:doc_valuestrue

所有支持 doc 值的字段都默认启用它们。

因此,您无需"doc_values": true为此类字段显式设置。

例如

{
  "mappings": {
    "_doc": {
      "properties": {
        "only_agg": {
          "type": "keyword",
          "index": false
        }
      }
    }
  }
}

如果您尝试only_agg在上面的示例中搜索字段,elastic 将抛出异常,原因如下:

Cannot search on field [only_agg] since it is not indexed.

推荐阅读