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

时间:2019-11-06 01:17:10

标签: elasticsearch elasticsearch-5 elasticsearch-7

我正在尝试升级集群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

1 个答案:

答案 0 :(得分:1)

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

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

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