我正在使用带自定义脚本的elasticsearch。我需要根据另一个索引中定义的其他值创建自定义分数。我们称这个值为“排名”。分数应如下所示:
Math.log(_score * 2) + doc['ranking'].value
排名取决于正在评分的类型中的提供者字段。我的问题是,从那时起排名在另一个索引中,它不会检索该值。进行这样一个分数的最佳方法是什么?此外,它怎么能这样做,以便它可以缓存结果。例如,无论如何,mvel都可以根据redis键值对检索值。
答案 0 :(得分:1)
您可以查看此链接以获取缓存技术https://github.com/imotov/elasticsearch-native-script-example/blob/master/src/main/java/org/elasticsearch/examples/nativescript/script/LookupScript.java,但它是本机java插件。虽然它可以翻译成groovy脚本实例。
另一种方式(但它取决于您的索引关系,例如父/子),您可以使用has_child
查询并使用score
字段作为索引之间的传输块,但这也是有限的。