一尘不染

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

elasticsearch

我试图获取记录在“标题”中,然后是X个字符。

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

我努力了:

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

结果,我得到这个错误:

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

我该如何解决?


阅读 1363

收藏
2020-06-22

共1个答案

一尘不染

您需要考虑到某些文档可能具有空title字段。因此,您可以使用常规的空安全运算符。另外,请确保改用POST方法:

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