首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Painless 7.5 -无痛脚本条件没有提供适当的结果

Painless 7.5 -无痛脚本条件没有提供适当的结果
EN

Stack Overflow用户
提问于 2019-12-25 07:38:36
回答 1查看 457关注 0票数 0

这是我的elasticsearch查询。我正在尝试获取所有满足条件的文档,如果job_id为1,则获取具有sourced = 0的文档,如果job_id不是1,则使用sourced = 1获取文档。

但它会返回所有的文件。

代码语言:javascript
复制
[
'script' => 
    ['script' => 
        [
            'lang' => 'painless', 
            'source' => "(doc['job_id'].size() > 0 && doc['job_id'].value !==  params.jid) || (doc['job_id'].size() > 0 && doc['job_id'].value == params.jid && doc['sourced'].value == 0)",
            'params' => ['jid' => 1]
        ]
    ]
]

引用字段的映射

代码语言:javascript
复制
"job_id" : {
      "type" : "long"
    },
"sourced" : {
      "type" : "byte"
    },
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-25 11:59:57

每个文档都由内联脚本计算。

一个示例(基于映射):

插入文档

代码语言:javascript
复制
PUT my_index/_doc/1
{
  "job_id": 1,
  "sourced": 0
}

PUT my_index/_doc/2
{
  "job_id": 0,
  "sourced": 2
}

搜索查询

代码语言:javascript
复制
GET my_index/_search (Kibana usage)
{
  "query": {
    "script": {
      "script": {
        "lang": "painless",
        "source": "doc['job_id'].value == params.jid ? doc['sourced'].value == 0 : doc['sourced'].value == 1",
        "params": {
          "jid": 1
        }
      }
    }
  }
}

你的用法

代码语言:javascript
复制
[
'script' => 
    ['script' => 
        [
            'lang' => 'painless', 
            'source' => "doc['job_id'].value == params.jid ? doc['sourced'].value == 0 : doc['sourced'].value == 1",
            'params' => ['jid' => 1]
        ]
    ]
]

结果

代码语言:javascript
复制
 "hits" : [
  {
    "_index" : "my_index",
    "_type" : "_doc",
    "_id" : "1",
    "_score" : 1.0,
    "_source" : {
      "job_id" : 1,
      "sourced" : 0
    }
  }
]

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59476231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档