elasticsearch - 如何在ElasticSearch中的脚本中访问文档ID?

标签 elasticsearch aggregation

我正在尝试编写一个汇总文档类型的查询。问题是,可以从文档ID中获取文档类型-它是ID的4-5个首字符,例如BPR::fawL5CcPE72Wf3m93hUg2。
这是我整理的查询:

{
    "query": {
        "match_all": { }
    },
    "aggregations": {
        "by_document_type": {
            "script": {
                "script": "doc['_id'].value.substring(0, 3)",
                "order": { 
                    "_count": "desc" 
                }
            }
        }
    }
}

但它说Parse Failure [Could not find aggregator type [script] in [by_document_type]]];

我做错什么了?

最佳答案

您只需要使用 terms aggregation并在其中输入脚本即可:

{
  "query": {
    "match_all": {}
  },
  "aggregations": {
    "by_document_type": {
      "terms": {
        "script": "doc['_id'].value.substring(0, 3)",
        "order": {
          "_count": "desc"
        }
      }
    }
  }
}

关于elasticsearch - 如何在ElasticSearch中的脚本中访问文档ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32371060/

相关文章:

elasticsearch - 按 key 长度过滤 "terms aggregation"

Elasticsearch:长值最大聚合结果为双值

clone - 封装聚合/组合

sparql - 是否可以在 SPARQL 中聚合两个资源?

elasticsearch - Elasticsearch查询按字段以特定顺序排序

javascript - 如何使用摄取附件插件和 JavaScript 客户端在 Elasticsearch 6.1 中索引 PDF?

python - pandas groupby 中的 NaN 项目是否紧随其后,包括类别列预期行为?

elasticsearch - ElasticSearch查询字符串查询default_operator

elasticsearch - 如何在Elastic APM中启用对Spring批处理的监视?

python - Django DRF elastic search dsl,基于另一个字段数值应用功能增强