我有一份文件,假设它有属性
"title": {
"type": "string"
},
"author": {
"type": "string"
}
通常情况下,当我搜索时,我希望在标题上获得更高的分数 但是,如果我搜索作者,我想在作者属性上获得更高的分数。
Leta说我搜索Inferno。
我得到(我想要的)
1. Inferno
2. Fernando
3. furnished.
但现在我进入丹·布朗 我想得到相同的结果,而不是
Danish meal
DanSomething
Dan..
我在搜索之前无法知道我是在搜索作者还是标题。 你有什么想法我会如何实现这个?
答案 0 :(得分:0)
实现此目标的最简单方法是在author
字段上提升查询,这样如果有作者匹配,则会显示在title
字段的其他匹配项下方。
例如,您可以尝试这样:
{
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "Dan Brown",
"fields": [
"title"
]
}
},
{
"query_string": {
"query": "Dan Brown",
"boost": 2,
"fields": [
"author"
]
}
}
]
}
}
}
在上面的查询中,我们将Dan Brown
作为作者的结果提高了2倍。
请注意,这只是给你一个引导程序,它绝对不是故事的结尾。为了获得完美的结果,可能需要创建一个或多个自定义分析器,以便正确索引您需要搜索的标记。但这应该让你前进。