1

如果文档的 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"]

4

1 回答 1

5

你走在正确的轨道上。如果此列表很大,则将 id 列表存储在地图中而不是数组中可能会更有效。

"sort" : {
  "_script" : {
    "script" : "return friends_visits_ids.containsKey(_fields._id.value)",
    "type" : "string",
    "params": {
      "friends_visits_ids": { "1" : {}, "2" : {}, "4" : {}}
    }
  }
}

确保id 字段已存储。否则 _fields._id.value 将为所有记录返回 null。

于 2012-04-22T15:56:13.407 回答