运行以下Elasticsearch 2.2 aggrigation不会返回我的Elasticsearch索引中seqId
类型String
的最大值:
{
"from": 0,
"size": 0,
"aggs" : {
"max_seqId" : {
"max" : { "script" : {
"inline": "doc['innerObject.seqId'].value.toBigInteger()",
}
}
}
}
}
我错过了什么?
答案 0 :(得分:0)
有些文档可能不包含'innerObject.seqId'
字段的值 - 字段本身缺失或分配了明确的null
值。
在这两种情况下,您都在评估产生NPE的null对象上的方法toBigInteger()
。
您可以尝试使用存在查询以此方式在评估脚本之前过滤掉缺失值文档:
{
"from": 0,
"size": 0,
"query": {
"exists": {
"field": "innerObject.seqId"
}
},
"aggs": {
"max_seqId": {
"max": {
"script": {
"inline": "doc['innerObject.seqId'].value.toBigInteger()"
}
}
}
}
}