2015-12-02 74 views
3

我试图让记录在'标题'中多于X个字符。elasticsearch根据字符串字段的长度来筛选

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

我曾尝试:

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

结果,我得到这个错误:

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

我该如何解决呢?

+0

请小心使用此解决方案。访问_source有很多性能问题。 – angelcervera

回答

3

您需要考虑到某些文档可能有空字段title。所以你可以使用groovy的无效运算符。另外请确保使用POST方法代替:

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