使用 dmesg 来查看一些硬件或驱动程序的信息或问题。

自定义插件用于排序,在调用lookup.source()时NullPointerException异常

Elasticsearch | 作者 CeaserWang | 发布于2020年01月02日 | 阅读数:1360

我写了一个插件用于排序,在调用获取文档调用lookup.source()的时候发生npe,主要逻辑代码:
@Override
public double runAsDouble() {
return PriceSupport.mainProcess(leafLookup, params);
}
PriceSupport.mainProcess方法的逻辑:
public static Double mainProcess(LeafSearchLookup lookup, Map<String, Object> params) {
ArrayList skuProductProperties = (ArrayList) lokup.source().get("skuProductProperties");

}
在调用 lookup.source().get("skuProductProperties")的时候异常,异常的代码行是get方法里边的loadSourceIfNeeded方法的【 reader.document(docId, sourceFieldVisitor);】出现空指针
 
补充,只有在排序的时候才会出现空指针。如下的形式不会有npe:
searchSourceBuilder.scriptField("estimatedPrice", buildComputePriceScript(searchParamDTO, 2)); searchSourceBuilder.scriptField("actPrice", buildComputePriceScript(searchParamDTO, 3));
 
只有在使用ScriptSortBuilder的时候才会有npe。
已邀请:

CeaserWang

赞同来自:

22.png


36D4A838-9BB5-45E2-865E-58C4CC1D74DE.png


3344.png


无标题.png


 

Charele - Cisco4321

赞同来自:

想看看这个问题,不过好像SearchScript这些类都找不到在哪里,
又看了下,才发现你用的是5.x,算了吧呵呵。

要回复问题请先登录注册