Elasticsearch подстрока должна содержаться в поле - PullRequest
0 голосов
/ 19 октября 2018

У меня следующий запрос:

GET _search
{
  "query": {
    "bool" : {
      "must" : {
        "match" : {  "log": "a perfect phrase" }
      },
     "filter": 
        {
          "range": {
            "time": {
               "gte": "now-10m",
               "lte": "now"
            }
          }
        }
    }
  }
}

Однако иногда я получаю документы, которые содержат некоторые слова из a perfect phrase, но НЕ точно a perfect phrase.Я хотел бы сохранить только документ, который содержит эту точную строку, а не документы, которые содержат в значительной степени эту строку.

Поскольку эта строка обычно содержится в гораздо большем документе, который может содержать случайные данные,Я не думаю, что могу использовать ключевое слово term.

Как мне найти все документы, в поле log которых содержится именно эта строка?

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете использовать match_phrase вместо match.

Таким образом, ваш поисковый запрос будет выглядеть следующим образом:

GET your-index-name/_search
{
  "query": {
    "bool" : {
      "must" : {
        "match_phrase" : {  "log": "a perfect phrase" }
      },
     "filter": 
        {
          "range": {
            "time": {
               "gte": "now-10m",
               "lte": "now"
            }
          }
        }
    }
  }
}

Обратитесь к этой ссылке для получения дополнительной информации.

...