Elasticsearch - 查询分数的查找值

时间:2014-10-12 16:56:34

标签: elasticsearch mvel

我正在使用带自定义脚本的elasticsearch。我需要根据另一个索引中定义的其他值创建自定义分数。我们称这个值为“排名”。分数应如下所示:

Math.log(_score * 2) + doc['ranking'].value

排名取决于正在评分的类型中的提供者字段。我的问题是,从那时起排名在另一个索引中,它不会检索该值。进行这样一个分数的最佳方法是什么?此外,它怎么能这样做,以便它可以缓存结果。例如,无论如何,mvel都可以根据redis键值对检索值。

1 个答案:

答案 0 :(得分:1)

  1. 你必须忘记mvel:)
  2. 您应该使用Groovy脚本
  3. 您可以查看此链接以获取缓存技术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字段作为索引之间的传输块,但这也是有限的。