该字段索引结构如下
索引聚合语句如下

求大家帮忙看看,怎么解决这问题
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在 Elasticsearch 中,integer_range 类型的字段不支持索引和聚合。为了处理这个 integer_range 字段,你需要将其转换为一个日期字段,并使用日期字段进行聚合。
以下是修复后的示例:
首先,我们需要创建一个新的字段来存储年份信息,并将其与 integer_range 字段关联起来。
{
"type": "object",
"properties": {
"year_info": {
"type": "object",
"properties": {
"level": {
"type": "string"
},
"year": {
"type": "number"
}
},
"required": ["level", "year"]
}
}
}
然后,在你的聚合查询中,你可以这样操作:
{
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"filter": [
{
"range": {
"year": {
"gte": 2011,
"lte": 2019
}
}
}
]
}
},
"aggs": {
"nodes": {
"terms": {
"field": "indexing_db.year_info.year",
"size": 50
}
}
}
}
在这个例子中,我们首先确保所有年份都在 2011 到 2019 的范围内。然后,我们根据这些年份计算每个节点的数量。
请注意,这个方法可能不是最优化的解决方案,因为这会生成大量的子文档(即每个年份的节点数量)。如果你的数据量非常大,你可能需要考虑其他策略,例如使用分片或使用分页功能。