升级到 Elasticsearch v7 后,查询 return 所有结果
After upgrading to Elasticsearch v7, queries return all results
我正在尝试升级我的集群 Elasticsearch v7,我的查询似乎 return 很多结果,即使是不可能的请求
以前,在搜索 "qdsssq" 时,我的搜索引擎什么也找不到。升级到v7后,类似查询returns的结果差不多。即使我删除了查询的所有 should
子句,我也会得到很多结果。但是,似乎评分仍然有效,并且我输入了合理的查询,我确实首先获得了最相关的结果(但甚至还有不匹配的结果)。你能帮我找出问题吗?
这是我在 elasticsearch v5 上触发的一个查询示例,它产生了预期的结果(并且似乎最终 return 现在在 ESv7 上对整个数据库进行了查询)。为了简单起见,我只为 FR/EN 添加了一个 should
{
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
是的,这与您所指的过滤器上下文的删除有关。
请尝试在两个 bool
查询中设置 minimum_should_match: 1
。
您可能还会发现 有帮助。
我正在尝试升级我的集群 Elasticsearch v7,我的查询似乎 return 很多结果,即使是不可能的请求
以前,在搜索 "qdsssq" 时,我的搜索引擎什么也找不到。升级到v7后,类似查询returns的结果差不多。即使我删除了查询的所有 should
子句,我也会得到很多结果。但是,似乎评分仍然有效,并且我输入了合理的查询,我确实首先获得了最相关的结果(但甚至还有不匹配的结果)。你能帮我找出问题吗?
这是我在 elasticsearch v5 上触发的一个查询示例,它产生了预期的结果(并且似乎最终 return 现在在 ESv7 上对整个数据库进行了查询)。为了简单起见,我只为 FR/EN 添加了一个 should
{
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
是的,这与您所指的过滤器上下文的删除有关。
请尝试在两个 bool
查询中设置 minimum_should_match: 1
。
您可能还会发现