Игнорировать пробелы в запросе строки запроса Elasticsearch 6.5 - PullRequest
1 голос
/ 06 октября 2019

Я использую запрос строки запроса для фильтрации документов в кластере ElasticSearch 6.5. Документы, которые мне нужно найти, содержат поле с некоторыми аргументами командной строки (со специальными символами, включая пробелы и двойные кавычки).

Например:

schtasks.exe /Create /tn "Microsoft\Office\Office Feature Updates Logon" /XML "C:\ProgramData\Microsoft\ClickToRun\{9AC08E99-230B-47e8-9721-4577B7F124EA}\Microsoft_Office_Office Feature Updates Logon.xml"

И я не знаю, какзапросить эту точную строку без необходимости экранировать все пробелы и другие специальные символы , описанные в документации.

Я могу найти ее с помощью запроса, подобного этому (все необходимые экранирования для jsonдля удобства формат пропущен):

{
  "query": {
    "bool": {
      "filter": [{
        "query_string": {"query": "field:schtasks.exe\ \/create*"}
      }]
    }
  }
}

И он работает, хотя для пользователя очень трудно, какой ввод передается непосредственно в параметр строки запроса.

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

"query_string": {"query": "field:\"schtasks.exe /create*\""}

Но это не работает.

Обновление: у меня есть следующее отображение для field:

...
"field": 
{
  "type": "keyword",
  "normalizer": "lowercase_normalizer"
},
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...