我们有一些父子关系的数据。但是当我们搜索两个场景时,得分是不同的。
对于这种情况,我们在索引中只有一条记录和一条子记录。
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
}
}
]
}
}
]
}
}
}
}
]
}
}
}
}
}
这里我们得到了孩子的父记录,但同样的分数也不同。