我知道solr支持查询中的条件(例如fl=if(min(2,myField),2,myField)
)。我无法在elasticsearch中找到类似的功能。我能找到的最近的是script fields。
min(max(myField,0),1)
等嵌套函数查询?sort=min(max(myField,0),1)
?答案 0 :(得分:5)
Scripting正是您要找的。默认脚本语言为mvel,但您可以轻松安装支持其他语言的插件,例如javascript,groovy,python。您也可以用Java编写自己的本机脚本。
您可以在不同的api中使用脚本,以下是一些示例:
可以从文档页面预加载将它们放在文件系统上的脚本:
脚本始终可以作为相关API的一部分提供,但它们可以提供 也可以通过将它们放在
config/scripts
下然后预先加载 通过脚本名称引用它们(而不是提供完整的 脚本)。这有助于减少之间传递的数据量 客户端和节点。脚本的名称源自目录的层次结构 存在于,和没有lang扩展名的文件名。对于 例如,放在
config/scripts/group1/group2/test.py
下的脚本 将命名为group1_group2_test
。
只有用java编写的本机脚本才能实现接口。如果是mvel,javascript python或groovy,你可以在文件中编写你需要的脚本,而不是将它与相关的api一起传递,并使用它的名称来引用它。