我有映射
'properties' : {
'names' : {
'types' : 'text',
'fields' : {
'suggest' : {
'type' : 'search_as_you_type',
}
}
},
'aliases' : {
'type' => 'nested',
'properties' : {
'names' : {
'type' : 'text',
'fields' : {
'suggest' : {
'type' : 'search_as_you_type',
}
}
}
}
}
}并希望自动完成‘name’和‘aliases.name’。使用下一个查询
GET people/_search
{
"query": {
"dis_max": {
"queries": [
{
"function_score": {
"query": {
"multi_match": {
"query": "nic",
"type": "bool_prefix",
"fields": [
"names.suggest",
"names.suggest._2gram",
"names.suggest._3gram"
]
}
},
"field_value_factor": {
"field": "rating"
},
"boost_mode": "replace"
}
},
{
"function_score": {
"query": {
"nested": {
"path": "aliases",
"inner_hits": {},
"query": {
"multi_match": {
"query": "nic",
"type": "bool_prefix",
"fields": [
"aliases.names.suggest",
"aliases.names.suggest._2gram",
"aliases.names.suggest._3gram"
]
}
}
}
},
"field_value_factor": {
"field": "rating"
},
"boost_mode": "replace"
}
}
]
}
},
"highlight": {
"fields": {
"names.suggest": {
}
},
"fragment_size": 10,
"pre_tags": [
""
],
"post_tags": [
""
]
}
}我想要显示原始名称,如果查询匹配它和原始名称+别名它匹配别名和不匹配的名称。例如:
尼科尔·费尔南多(Jame Fernand,Tom Fernand)
对于查询'Fern‘,我需要显示'Nicol Fernand',对于'jam’,我需要显示'Nicol Fernand (Jame Fernand)‘。
在这种情况下,突出显示不起作用。我怎样才能获得这种行为呢?
发布于 2020-12-13 22:37:54
您可以像这样使用named queries:
{
"query": {
"dis_max": {
"queries": [
{
"function_score": {
"query": {
"multi_match": {
"_name": "matched_names_field", <--
"query": "nic",
...https://stackoverflow.com/questions/65276173
复制相似问题