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

Eya*_* Ch 5 elasticsearch

我试图获得"标题"中的记录多于X个字符.

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

我试过了:

GET books/_search
{
    "filter" : {
          "script" : {
              "script" : "_source.title.length() > 10"
          }
      }
}
Run Code Online (Sandbox Code Playgroud)

结果,我得到这个错误:

GroovyScriptExecutionException[NullPointerException[Cannot invoke method length() on null object
Run Code Online (Sandbox Code Playgroud)

我怎么解决呢?

Val*_*Val 6

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

POST books/_search
{
    "filter" : {
          "script" : {
              "script" : "_source.title?.size() > 10"
          }
      }
}
Run Code Online (Sandbox Code Playgroud)