在用户元数据中传递多个参数时,没有搜索结果

时间:2019-04-29 07:04:46

标签: elasticsearch elasticsearch-x-pack

我想以弹性方式应用文档级安全性,但是一旦在用户元数据中提供多个值,我将找不到匹配项。

我正在弹性地创建一个角色和一个用户,并将用户元数据中的值传递给应该根据其进行搜索的角色。如果我给一个值,它就可以正常工作。

用于创建角色:

PUT _xpack/security/role/my_policy

{ 
    "indices": [{
        "names": ["my_index"],
        "privileges": ["read"],
        "query": {
            "template": {
                "source": "{\"bool\": {\"filter\": [{\"terms_set\": {\"country_name\": {\"terms\": {{#toJson}}_user.metadata.country_name{{/toJson}},\"minimum_should_match_script\":{\"source\":\"params.num_terms\"}}}}]}}"
            }
        }
    }]
}

对于用户:

PUT _xpack/security/user/jack_black

{
    "username": "jack_black",
    "password":"testtest",
    "roles": ["my_policy"],
    "full_name": "Jack Black"
    "email": "jb@tenaciousd.com",
    "metadata": {
        "country_name": ["india" , "japan"]
    }
}

我希望输出的结果仅是印度和日本的结果。如果用户搜索其他内容,他们将不会获得任何结果。

但是,我完全看不到任何结果:

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 0,
        "max_score": null,
        "hits": []
    }
}

0 个答案:

没有答案