这是我的elasticsearch查询。我正在尝试获取所有满足条件的文档,如果job_id为1,则获取具有sourced = 0的文档,如果job_id不是1,则使用sourced = 1获取文档。
但它会返回所有的文件。
[
'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]
]
]
]引用字段的映射
"job_id" : {
"type" : "long"
},
"sourced" : {
"type" : "byte"
},发布于 2019-12-25 11:59:57
每个文档都由内联脚本计算。
一个示例(基于映射):
插入文档
PUT my_index/_doc/1
{
"job_id": 1,
"sourced": 0
}
PUT my_index/_doc/2
{
"job_id": 0,
"sourced": 2
}搜索查询
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
}
}
}
}
}你的用法
[
'script' =>
['script' =>
[
'lang' => 'painless',
'source' => "doc['job_id'].value == params.jid ? doc['sourced'].value == 0 : doc['sourced'].value == 1",
'params' => ['jid' => 1]
]
]
]结果
"hits" : [
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"job_id" : 1,
"sourced" : 0
}
}
]希望这能有所帮助
https://stackoverflow.com/questions/59476231
复制相似问题