是否可以添加一个布尔的自定义脚本字段,如果文档的id存在于作为参数发送的数组中,则返回true?
像这样https://gist.github.com/2437370
使用mvel执行此操作的正确方法是什么?
更新 无法按照Imotov的回答中的规定使其工作。
映射:
类别:
:sort=>{:_script=>{:script=>"return friends_visits_ids.contains(_fields._id.value)", :type=>"string", :params=>{:friends_visits_ids=>["4f8d425366eaa71471000011"]}, :order=>"asc"}}}
place: {
properties: {
_id: { index: "not_analyzed", store: "yes" },
}
}
我没有收到任何错误,文件没有正确排序。
更新2
哦,我确实在文件中得到了回复:
"sort"=>["false"]
答案 0 :(得分:5)
你走在正确的轨道上。如果此列表很大,那么在地图而不是数组中存储id列表可能更有效。
"sort" : {
"_script" : {
"script" : "return friends_visits_ids.containsKey(_fields._id.value)",
"type" : "string",
"params": {
"friends_visits_ids": { "1" : {}, "2" : {}, "4" : {}}
}
}
}
确保id field is stored。否则_fields._id.value将为所有记录返回null。