После обновления до Elasticsearch v7 запросы возвращают все результаты - PullRequest
1 голос
/ 06 ноября 2019

Я пытаюсь обновить свой кластер Elasticsearch v7, мои запросы, похоже, дают много результатов, даже для невозможных запросов

Раньше при поиске "qdsssq" моя поисковая система ничего не находила. После обновления до v7 аналогичный запрос возвращает почти результаты. Даже когда я удаляю все предложения should из моего запроса, я получаю много результатов. Тем не менее, кажется, что оценка все еще работает, и я набираю правдоподобные запросы, я действительно сначала получаю наиболее релевантные результаты (но даже и несоответствующие результаты). Можете ли вы помочь мне разобраться в проблеме?

Вот пример запроса, который я запускал наasticsearch 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
}

Я пропустил какое-то серьезное изменение, которое могло бы объяснить это? связано ли удаление контекста фильтра (не совсем понятно, что это значит)? Как я могу исправить свой запрос, чтобы результаты, которые вообще не совпадали, не включались в результаты?

Я использую - Elasticsearch v7.1 на AWS - Ruby gemasticsearch-7.3.0

1 Ответ

1 голос
/ 08 ноября 2019

Да, это связано с удалением контекста фильтра, на который вы ссылались.

Пожалуйста, попробуйте установить minimum_should_match: 1 в обоих bool запросах.

Вы также можете найти этот ответ полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...