elasticsearch - Elasticsearch脚本查询按字段值获取参数

标签 elasticsearch elasticsearch-painless

我正在尝试使用脚本查询过滤结果。
我可以这样访问带有硬编码字段值的参数值:

"script": "doc['price'].value * params.1000 > 4000",
      "params": {"1000": "1.75"}

但是,如果我尝试使用doc获取字段值,则不会进行过滤,并且可以看到所有结果。
    "script": "doc['price'].value * params.doc['rate'] > 4000",
      "params": {"1000": "1.75"}

有什么解决方案可以动态获取参数值?

编辑:

字段“费率”只是ID。它是Integer,但不是我需要的值。想法是每次通过参数传递不同的值,而不是频繁更新字段“rate”。希望这是更好的解释...

例:
"script": "doc['price'].value * params.doc['rate'] > 4000",
  "params": {
              "1000": "1.75",
              "1001": "3.75",
              "1002": "5"
            }

if 
'price' == 10 &&
'rate' == 1002
result should be: 10 * 5 > 4000  

if 
'price' == 10 &&
'rate' == 1001
result should be: 10 * 3.75 > 4000

if 
'price' == 7 &&
'rate' == 1000
result should be: 7 * 1.75 > 4000   

最佳答案

我假设rateinteger,如果不是这样的话,脚本看起来就不会这样。如果我正确理解了您的过滤条件,那么请纠正我:

 "script": "(doc['price'].value * doc['rate'].value) > 4000", <--replace params with doc
      "params": {"1000": "1.75"}

关于elasticsearch - Elasticsearch脚本查询按字段值获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209904/

相关文章:

elasticsearch - 如何在写入ElasticSearch时使用更新API(无痛)连接对象而不是整个对象

elasticsearch - Elasticsearch自定义评分功能测试空日期值

php - 无法在FOSElasticaBundle中排序

elasticsearch - 我如何解释百分位数聚合类型的结果

elasticsearch - 使用索引模板在 Elasticsearch 中配置TTL

elasticsearch - 如何在 Elasticsearch 重新索引无痛脚本中生成 UUID

elasticsearch - elasticsearch提取管道以重命名动态字段

c# - ElasticSearch NEST 术语查询未返回结果

elasticsearch - 弹性:我想写一个查询(在特定月份的任何时候,每小时经历的峰值量)

elasticsearch - 如何使用无痛脚本来获取foreach管道指令的当前条目?