2017-05-12 88 views
1

我试图在ElasticSearch中创建一个函数分数(在其他筛选器后)为最近购买产品的客户提供了更高的分数。为此我有一个字段“lastPurchaseOn”。ElasticSearch函数分数查询不默认为1如果缺少字段

该查询还需要返回没有购买任何产品的客户,所以我无法过滤出现在的最后一个PouchaseOn字段。

"functions": [ 
    { 
     "exp": { 
      "lastPurchaseOn": { 
       "scale": "3d" 
      } 
     } 
    }, 
    ... 
] 

的问题是场“lastPurchaseOn”丢失时,函数返回1分,当我真的希望它返回0

有没有一种方法,使函数返回0缺少值?

感谢

回答

0

official documentation指出它非常清楚:

如果数字字段在文档中缺少的,该函数将返回1.

主要的原因是,有没有办法用于返回0的exponential function。您可以尝试使用linear函数而不是exp

+0

我读过文档。这就是为什么我问是否有任何选项,所以0返回缺失值。将其更改为线性不会改变返回1的事实:( –

+0

在某些情况下,线性函数的值会达到0,而exp和gauss都不是这两个指数函数都不会达到0。你有没有试过? – Val

+0

你有机会尝试一下吗? – Val