elasticsearch按字符串字段的长度过滤

时间:2015-12-02 11:26:17

标签: elasticsearch

我正在努力获取唱片中的标题'超过X个字符。

注意:并非所有记录都包含标题字段。

我试过了:

GET books/_search
{
    "filter" : {
          "script" : {
              "script" : "_source.title.length() > 10"
          }
      }
}

因此,我收到此错误:

GroovyScriptExecutionException[NullPointerException[Cannot invoke method length() on null object

我该如何解决?

2 个答案:

答案 0 :(得分:5)

您需要考虑到某些文档可能包含空title字段。所以你可以使用groovy null-safe运算符。另外,请确保使用POST方法:

POST books/_search
{
    "filter" : {
          "script" : {
              "script" : "_source.title?.size() > 10"
          }
      }
}

答案 1 :(得分:0)

您还可以使用自定义标记生成器来计算字符数。请查看此答案以获取可能的帮助:https://stackoverflow.com/a/47556098/463846