我对弹性搜索很新,所以我在努力解决这个问题:
我有一个带有名为title属性的elasticsearch索引,例如,我在此属性上有以下值:
"Questions To The First Minister" {1}
"First person to speak" {2}
"First to speak will be Minister Dave" {3}
在我的网站上,我有一个文本框,用户可以在其中输入以下短语:
"First Minster"
which should return {1}
First Minister
which should return {1} {2} {3}
First+Minister
which should return {1} {3}
目前,我能想到这样做的唯一方法是根据用户输入文本框的内容进行3次不同的查询:
第一个:
{
query:{
bool:{
must:[
{
match:{
title:{
query: First Minister,
type: phrase
}
}
}
]
}
}
min_score: 1
}
第二个:
{
query:{
bool:{
must:[{
match:{
terms: {
title:[
"first",
"minister"
]}
}]
}
}
}
第三个我并没有像我的PM那样深入思考,只是告诉我这个场景。
问题是:
有没有更好的方法来实现这一点,这可以通过对ES的单个查询来实现,或者是"正确的"这样做的方法是,查看输入的输入,然后根据它改变查询?
答案 0 :(得分:0)
我想我可能有解决方案。
我在这里张贴这个,其他任何人都在寻找它(也许有人可以告诉我这是否可以做到这一点)
我想我可以使用query_string查询只使用1个查询。
如果我搜索" \"第一部长" \"它返回{1}
如果我搜索"首先是AND Minster"它返回{3}
和"首先是OR部长"它返回{1} {2} {3}