Elasticsearch - этот поиск не возвращает правильные результаты после обновления с 6.7 до 7.0 - PullRequest
1 голос
/ 22 апреля 2019
{  
  "query":{  
    "constant_score":{  
      "filter":{  
        "bool":{  
          "should":{  
            "terms":{  
              "field_a":[  
                "value1", "value2"
              ]
            }
          },
          "must":{  
            "term":{  
              "field_b":"value"
            }
          }
        }
      }
    }
  }
}

Этот поиск должен был вернуть результаты, содержащие значение1 или значение2 в field_a и значение в field_b.

Так похоже на этот запрос MySQL:

SELECT * FROM table WHERE field_a IN ('value1', 'value2') AND field_b = value

После обновленияон вернет все результаты, где field_b = значение.Первая часть запроса полностью игнорируется.
Есть предложения по исправлению?

1 Ответ

1 голос
/ 22 апреля 2019

Вы столкнулись с этим критическим изменением . minimum_should_match больше не устанавливается на 1. Чтобы исправить это, явно установите minimum_should_match на 1

Ваш новый запрос может быть исправлен так:

{  
  "query":{  
    "constant_score":{  
      "filter":{  
        "bool":{  
          "should":{  
            "terms":{  
              "field_a":[  
                "value1", "value2"
              ]
            }
          },
          "minimum_should_match": 1,
          "must":{  
            "term":{  
              "field_b":"value"
            }
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...