可以说我们有["first name", "phone number", "city", "last name"]
之类的属性。 elasticsearch
是否有可能基于1个关键字从每个属性返回建议。例如,搜索"phil"
可以把Phil叫回城市,把费城的名字叫回城市,把philer
的名字给城市?
我已经进行了研究,但找不到确切的答案。我试图避免将最大建议从自动完成更改为类似100 suggestions
,并在前端Vue代码或后端Java代码中对其进行处理。
现在我正在使用完成提示器,elasticsearch
是sorted based on weight
。如果将最大建议设置为10或特定数字,则建议始终是每个关键字10个建议。有没有一种方法可以使建议随机化?我现在也在使用弹性搜索5.5
我想写一个elasticsearch query
来按关键字和属性搜索并返回几个属性的建议,而不仅仅是每次都返回权重最高的属性。
答案 0 :(得分:0)
在查询中,您可以添加多个建议者,因此对于每个单独的字段,您都可以请求建议。
如果您的映射看起来像这样:
{
"mappings": {
"properties": {
"first_name": {
"type": "text",
"fields": {
"suggest": {
"type": "completion"
}
}
},
"city": {
"type": "text",
"fields": {
"suggest": {
"type": "completion"
}
}
}
}
}
}
您的查询可能如下所示:
POST myindex/_search
{
"suggest": {
"first_name_suggest" : {
"prefix" : "phil",
"completion" : {
"field" : "first_name.suggest"
}
},
"city_suggest" : {
"prefix" : "phil",
"completion" : {
"field" : "city.suggest"
}
}
}
}
有关completion suggesters或suggesters in general的更多信息,请参见文档。