升级到Elasticsearch v7后,查询将返回所有结果

我正在尝试升级集群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",analyzer: "english"
                    }
                  }
                }]
              }
            },should: [{
              match_phrase: {
                : "description.french" => {
                  query: "qdsssq",analyzer: "french_heavy"
                }
              }
            },{
              match_phrase: {
                : "description.english" => {
                  query: "qdsssq",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

ccczzzxxx 回答:升级到Elasticsearch v7后,查询将返回所有结果

是的,这与删除您所引用的过滤器上下文有关。

请尝试在两个minimum_should_match: 1查询中设置bool

您可能还会发现this answer有用。

本文链接:https://www.f2er.com/3155520.html

大家都在问