我正在使用带有自定义脚本的弹性搜索。我需要根据另一个索引中定义的另一个值创建一个自定义分数。我们称这个值为“排名”。分数应如下所示:
Math.log(_score * 2) + doc['ranking'].value
排名取决于正在评分的类型中的提供者字段。我的问题是,从那时起排名在另一个索引中,它不会检索值。进行此类评分的最佳方法是什么?另外,如何才能缓存结果。例如,无论如何在 mvel 中都可以根据 redis 键值对检索值。
我正在使用带有自定义脚本的弹性搜索。我需要根据另一个索引中定义的另一个值创建一个自定义分数。我们称这个值为“排名”。分数应如下所示:
Math.log(_score * 2) + doc['ranking'].value
排名取决于正在评分的类型中的提供者字段。我的问题是,从那时起排名在另一个索引中,它不会检索值。进行此类评分的最佳方法是什么?另外,如何才能缓存结果。例如,无论如何在 mvel 中都可以根据 redis 键值对检索值。
您可以查看此链接以了解缓存技术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
字段作为索引之间的传输块,但这太有限了。