ElasticSearch:如何在子组中查询?

时间:2015-02-09 15:52:02

标签: elasticsearch

我有文件存储用户知道的技能:

{
"size": 1000,
"query": {
    "function_score": {
        "query": {
            "bool": {
                "should": [
                    {
                        "query_string": {
                            "query": "Objective-C",
                            "default_field": "user.skill.name"
                        }
                    },
                    {
                        "range": {
                            "user.skill.weight_relative": {
                                "gte": 1
                            }
                        }
                    },
                    {
                        "range": {
                            "user.skill.weight_absolute": {
                                "gte": 1
                            }
                        }
                    },
...

问题我遇到的问题是ElasticSearch正在返回用户,例如skill.name == Objective-C,但相对和绝对的权重为0,而且得分大于1的用户,但技能。名字是完全不同的东西。

有没有办法告诉弹性我认为这些搜索是"本地"作用域?我不知道这个场景的名称。如果我没有正确地调用它,请原谅。

我正在运行的查询也有一个自定义_score函数,它为具有第三个指标的用户提供更高的分数(不包括其不相关)。可能是因为这个自定义分数功能?可能它会给出错误的"用户得分较高,因为第三个指标高于具有所需技能和水平的用户?

感谢。

1 个答案:

答案 0 :(得分:0)

找到我要找的东西:

http://www.elasticsearch.org/blog/managing-relations-inside-elasticsearch/

必须将元素的类型从object更改为nested并执行nested搜索。链接中的示例显示了我正在经历的内容。