我正在尝试升级集群Elasticsearch v7,即使对于不可能的请求,我的查询似乎也会返回很多结果
以前,当搜索“ qdsssq”时,我的搜索引擎什么也找不到。升级到v7后,类似的查询几乎返回结果。即使删除了查询中的所有should
子句,我也得到了很多结果。但是,评分似乎仍然有效,而且我键入了合理的查询,我确实确实首先获得了最相关的结果(但即使是不匹配的结果也是如此)。您能帮我解决问题吗?
这是我在elasticsearch v5上触发的查询的一个示例,该查询产生了预期的结果(现在看来最终在ESv7上返回了整个数据库)。为了简单起见,我仅将一个should
用于FR / EN
{
index: "profiles",
type: nil,
body: {
query: {
function_score: {
query: {
bool: {
disable_coord: true,
filter: {
bool: {
filter: [{
term: {
indexable: true
}
}],
should: [{
match_phrase: {
: "description.french" => {
query: "qdsssq",
boost: 1,
slop: 50,
analyzer: "french_heavy"
}
}
}, {
match_phrase: {
: "description.english" => {
query: "qdsssq",
boost: 1,
slop: 50,
analyzer: "english"
}
}
}]
}
},
should: [{
match_phrase: {
: "description.french" => {
query: "qdsssq",
boost: 1,
slop: 50,
analyzer: "french_heavy"
}
}
}, {
match_phrase: {
: "description.english" => {
query: "qdsssq",
boost: 1,
slop: 50,
analyzer: "english"
}
}
}]
}
},
functions: [],
score_mode:: sum,
boost_mode:: multiply
}
}
},
size: 12,
from: 0
}
我是否错过了一些可以解释这一点的重大变化? the removal of the filter context(不确定这意味着什么)是否相关?如何解决查询问题,使根本不匹配的结果不包括在结果中?
我正在使用 -AWS上的Elasticsearch v7.1 -Ruby gem elasticsearch-7.3.0
答案 0 :(得分:1)