Точное совпадение с двойными кавычками в Elasticsearch 7 - PullRequest
0 голосов
/ 11 октября 2019

Я использовал двойные кавычки для достижения «точного соответствия» (здесь это не означает точное совпадение на уровне терминов, «Nike Air» должно совпадать с «Nike Air», но не должно совпадать с «Nike Air Force») в старшихВерсия ES (2.x, 5.x):

GET some-index/_search
{
  "query": {
    "match": {
      "brandName": "\"Nike Air\""
    }
  }
}

Так что я получаю только «Nike Air», а не «Nike Air Force». Но запрос не работает под ES 7 - «Nike Air Force» также возвращается. Как я могу добиться того же в ES 7?

Вот определение соответствия some-index:

{
  "some-index" : {
    "mappings" : {
      "properties" : {
        "brandName" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}

1 Ответ

1 голос
/ 11 октября 2019

Совпадение запрос ищет токены. Таким образом, он ищет токен nike и air в документах

Если вы намереваетесь сделать точное совпадение, используйте term запрос по ключевому полю

 "query": {
    "term": {
      "brandName.keyword": "Nike Air"
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...