我正在从 elasticsearch 1.7 升级到 5.0。其中一项更改是删除过滤查询以支持布尔查询。例如,我在旧版本的 ES 中使用了这个搜索哈希:
{
"sort": [ { "updated_at" => "desc" } ],
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{ "term": { "account_id" => 2 } },
{ "bool": {
"should": [
{ "missing": { "field": "workgroup_ids" } },
{ "term": { "visibility": 2 } }
]
}
}
],
"must_not": [
{ "range": { "expires_at": { "lte": "2016-11-17T16:27:22Z" } } },
{ "range": { "published_at": { "gte": "2016-11-17T16:27:22Z" } } }
]
}
},
"query": {
"bool": {
"must": [
{ "query_string": { "query": "name:(*orang.jpg*)" } }
]
}
}
}
}}
所以,我知道这需要更多的格式:
{ "query": "bool": [{ term: { account_id: 2 } }]}
我也知道缺少的查询需要替换为 5 中的 must_not exists 查询。也就是说,我无法弄清楚如何转换这个重度嵌套的哈希,所以有人知道我将如何为 ES5 正确构建它吗?
我还在使用 elasticsearch-rails gem,fyi 在 Rails 中使用/访问 ES。