Получение точного совпадения со строкой `# deprecated` в kibana / elk

Я использую Kibana, чтобы найти все журналы, содержащие точное совпадение строки #deprecated.

enter image description here

По непонятной мне причине он соответствует строке со словом «deprecated» без знака #.

Я пробовал использовать экранирование для # согласно Документация Lucene. т.е. message:"\\#deprecated" - без изменения результатов.

  • Как я могу запросить точное совпадение только с точным совпадением текста #deprecated
  • Почему это происходит?

Попробуйте использовать поле "message.keyword", так как #, вероятно, вычеркнуты вашей цепочкой анализа.

Pierre Mallet 31.10.2018 11:40
message.keyword:deprecated or message.keyword: * deprecated * `ничего не возвращает, сообщение действительно является полем analyzed.
Lior Bar-On 31.10.2018 14:11

не могли бы вы добавить к вопросу отображение / настройку индекса?

Pierre Mallet 31.10.2018 15:13
0
3
394
1

Ответы 1

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

Итак, после анализа (при условии стандартного анализа) чего-то вроде: «Class is #deprecated» сгенерированный поток токенов будет иметь следующие токены: «class», «deprecated» («is» - это стоп-слово). Индексированные формы "#deprecated" и "deprecated" идентичны, поэтому невозможно имеет запрос, который может различать их в том виде, в каком он индексируется в данный момент.

Чтобы исправить это, вам придется изменить свой анализатор. WhitespaceAnalyzer может быть хорошим выбором и должен решить эту проблему. Однако будьте осторожны, вы не приносите больше вреда, чем пользы. Если вы используете WhitespaceAnalyzer, вам придется столкнуться с другой пунктуацией и поиском "предложения" не найдет «совпадение в конце предложения.» из-за точки. Итак, если вы ищете полный текст, это наверняка вызовет гораздо больше проблем, чем решит.

Кстати, если вы хотите знать полные правила стандартного анализа, это реализация UAX # 29 границы слов

Другие вопросы по теме