弹性搜索关系分数对于Direct Query和hasChild查询是不同的

时间:2016-10-26 05:36:31

标签: sorting elasticsearch parent-child relevance

我们有一些父子关系的数据。但是当我们搜索两个场景时,得分是不同的。

对于这种情况,我们在索引中只有一条记录和一条子记录。

a)使用Direct Query查询子IndexType

直接查询:

{
    "from": 0,
    "size": 20,
    "sort": [
        {
            "_score": {
                "order": "desc"
            }
        }
    ],
    "query": {
        "filtered": {
            "query": {
                "bool": {
                    "must": [
                        {
                            "bool": {
                                "should": [
                                    {
                                        "query_string": {
                                            "query": "search\\ text",
                                            "fields": [
                                                "TYPECHILD.MAINTITLE.edgengramanalyzed^4"
                                            ],
                                            "default_operator": "and",
                                            "boost": 10
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        }
    }
}

我们得到了一些得分的儿童记录。

b)使用HasChild搜索相同记录[has_child:score_mode-max]。

HasChild查询:

{
    "from": 0,
    "size": 20,
    "sort": [
        {
            "_score": {
                "order": "desc"
            }
        }
    ],
    "query": {
        "filtered": {
            "query": {
                "bool": {
                    "must": [
                        {
                            "has_child": {
                                "type": "TYPE",
                                "score_mode": "max",
                                "query": {
                                    "bool": {
                                        "must": [
                                            {
                                                "bool": {
                                                    "should": [
                                                        {
                                                            "query_string": {
                                                                "query": "search\\ text",
                                                                "fields": [
                                                                    "MAINTITLE.edgengramanalyzed^4"
                                                                ],
                                                                "default_operator": "and",
                                                                "boost": 10
                                                            }
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
}

这里我们得到了孩子的父记录,但同样的分数也不同。

0 个答案:

没有答案