1

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

  1. elasticsearch 是否支持嵌套函数查询min(max(myField,0),1)
  2. 如果是这样,它是否也支持这样的排序查询,比如sort=min(max(myField,0),1)
4

1 回答 1

5

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

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

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

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

脚本的名称来源于它所在目录的层次结构,以及不带 lang 扩展名的文件名。例如,放置在下面的脚本config/scripts/group1/group2/test.py 将被命名为group1_group2_test.

只有用 java 编写的本机脚本必须实现接口。对于 mvel、javascript python 或 groovy,您可以只在文件中编写您需要的脚本,而不是将其与相关 api 一起传递并使用其名称引用它。

于 2013-07-19T08:23:12.243 回答