我有这样的文件
{
"_index": "message_2017-08",
"_type": "comment",
"_id": "c000001",
"_source": {
"companies": {
"58f99f99ba63d10006291b59": {
"id": "58f99f99ba63d10006291b59",
"sentiment": "58f8898273fabd33ee09d317"
}
},
"sentiment": "58f8898273fabd33ee09d319",
"purpose": "58f8898373fabd33ee09d31a"
}
},
{
"_index": "message_2017-08",
"_type": "comment",
"_id": "c000002",
"_source": {
"companies": {
"58f99f99ba63d10006291b59": {
"id": "58f99f99ba63d10006291b59"
}
},
"sentiment": "58f8898273fabd33ee09d317",
"purpose": "58f8898373fabd33ee09d31a"
}
},
{
"_index": "message_2017-08",
"_type": "comment",
"_id": "c000003",
"_source": {
"sentiment": "58f8898273fabd33ee09d318",
"purpose": "58f8898373fabd33ee09d31a"
}
}
我想汇总文件,以防万一,
如果_source.companies.{company_id}.sentiment
现有使用此字段
如果不使用_source.sentiment
我尝试像这样聚合,但收到有关null_pointer_exception
"aggs": {
"by_sentiment": {
"terms": {
"script": {
"inline": "if(params['_source']['companies']['58f99f99ba63d10006291b59']['sentiment'].empty == 'true'){return params['_source']['sentiment']} else {return params['_source']['companies']['58f99f99ba63d10006291b59']['sentiment']}"
}
}
}
}
谁有任何想法?如何检查脚本中存在的字段?
答案 0 :(得分:1)
我猜如果路径中的一个元素丢失,rebase
将为null,因此调用isEmpty会抛出NPE。
在路径中的每个元素上调用isEmpty之前,请尝试检查是否为null。