elasticsearch是否支持条件查询?

时间:2013-07-19 06:13:38

标签: elasticsearch

我知道solr支持查询中的条件(例如fl=if(min(2,myField),2,myField))。我无法在elasticsearch中找到类似的功能。我能找到的最近的是script fields

  1. elasticsearch是否支持min(max(myField,0),1)等嵌套函数查询?
  2. 如果是这样,它是否也支持此类排序查询,例如sort=min(max(myField,0),1)

1 个答案:

答案 0 :(得分:5)

Scripting正是您要找的。默认脚本语言为mvel,但您可以轻松安装支持其他语言的插件,例如javascriptgroovypython。您也可以用Java编写自己的本机脚本。

您可以在不同的api中使用脚本,以下是一些示例:

可以从文档页面预加载将它们放在文件系统上的脚本:

  

脚本始终可以作为相关API的一部分提供,但它们可以提供   也可以通过将它们放在config/scripts下然后预先加载   通过脚本名称引用它们(而不是提供完整的   脚本)。这有助于减少之间传递的数据量   客户端和节点。

     

脚本的名称源自目录的层次结构   存在于,和没有lang扩展名的文件名。对于   例如,放在config/scripts/group1/group2/test.py下的脚本   将命名为group1_group2_test

只有用java编写的本机脚本才能实现接口。如果是mvel,javascript python或groovy,你可以在文件中编写你需要的脚本,而不是将它与相关的api一起传递,并使用它的名称来引用它。