2014-11-25 2 views
0

Я строю приборную панель kibana, которая отображает информацию о X509 certificates. Я хотел бы построить круговую диаграмму сертификатов, которые содержат подстановочный знак в своих атрибутах CN или SAN, но я не могу найти синтаксис запроса, который работает.Поиск строки, начинающейся с подстановочного знака в ElasticSearch

Чтобы соответствовать строке, как subject.cn: "*.example.net", я попытался следующие kibana запросы:

subject.cn:/\*./ 
subject.cn:/^\*./ 
subject.cn:\*\. 
subject.cn:\*. 
subject.cn:*. 

Может кто-то мне точку в правильном синтаксисе? Это даже то, что поддерживает ES/Lucene?

+2

, как это «* .example.net», хранящиеся в поле? если проанализировать, возможно, вы потеряли звездочку и периоды и просто сохраняете «пример» и «нетто» в качестве двух условий. Какую функцию запроса вы используете? например query_string, match и т. д.? –

+0

Вот пример cert с subject.cn hightighted on line 27 https://linuxwall.info/p/NsrE#L27 Как вы можете видеть, подстановочный знак все еще присутствует. –

+0

Это не показывает, какое отображение вы использовали - использовали ли вы отображение по умолчанию? –

ответ

1

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

ca:false AND (subject.cn.raw:*\** OR x509v3Extensions.subjectAlternativeName.raw:*\**) 
1

Анализ *.example.net с стандартного анализатора даст вам один срок example.net - то есть звездочка и первый «» были лишены.

Использование not_analyzed будет хранить полное поле *.example.net (как и ожидалось!)

Если подстановочные всегда в начале имени CN затем с помощью простого запроса префикса будет работать (я упростил поле имя):

curl -XGET 'http://localhost:9200/mytest/certificates/_search?pretty' -d '{ 
"query": { 
    "prefix": { "cn.raw":"*"} 
    } 
}' 

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

E.g. используйте pattern analyser и определите «.». как ваш разделитель, или, возможно, создать собственный анализатор, который вызывает path hierarchy tokenizer - он будет зависеть от того, как пользователь хочет искать ваши данные.

Смежные вопросы