elasticsearch - 在 Elasticsearch 查询中使用脚本时,根据它们的长度过滤构面术语

标签 elasticsearch mvel

我想创建一个术语方面,它仅返回长度大于某个值的术语的结果。理想情况下,它看起来像:

 "facets": {
    "myFacet": {
      "terms": {
        "field": "content",
        "size": 10,
        "script": "term.length > 3 ? true: false"
      }
    }
  }

但是,MVEL 脚本语言似乎不喜欢这个术语。 长度 属性(property)。还有另一种方法可以实现这一目标吗? MVEL 文档没有提供有关此用例的太多信息。

最佳答案

根据来自 elasticsearch (Error: could not access: length; in class: java.lang.String) 的错误,mvel 代表 lengthjava.lang.String类,所以你应该使用 java.lang.String#length()方法。

"facets": {
  "myFacet": {
    "terms": {
      "field": "content",
      "size": 10,
      "script": "term.length() > 3 ? true: false"
    }
  }
}

关于elasticsearch - 在 Elasticsearch 查询中使用脚本时,根据它们的长度过滤构面术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860048/

相关文章:

java - 在 Java 运行时评估基于 Json 的规则

dynamic - Nest Elastic - 构建动态嵌套查询

elasticsearch - 如何按ID中的文档对Elasticsearch进行排序?

java - Docker:无法从 Spring Boot docker 镜像连接到 Elasticsearch

performance - 对于产品属性的索引,更多的短文本字段与更少的字段以及更多的单词

elasticsearch - 使用弹性堆栈可视化kibana中的网站使用情况

java - MVEL 不区分大小写

elasticsearch - 计算多值字段位置的距离