Я не уверен, что это ответ на ваш реальный вопрос, я все равно напишу его, так как кому-то может быть полезно, и я обнаружил, что примеры синтаксиса фильтра Kibana неуловимы при поиске в Google.
Я пытаюсь определить логический фильтр вместо логического запроса на моей вкладке «Обнаружение», чтобы не загромождать поле поиска и облегчить дальнейшую фильтрацию по ограниченному набору значений.
Я нашел эту ссылку на документацию, где И, ИЛИ, НЕ описан синтаксис фильтра. После небольшого экспериментирования это сработало для меня, например:
У меня есть поле с именем host
, содержащее имя сервера, отправляющего запись журнала. Существует довольно много серверов, каждый из которых принадлежит к одной из нескольких групп резервирования. Чтобы фильтровать только записи журнала, созданные серверами «SERVER06
OR SERVER07
OR SERVER08
», которые принадлежат к отдельной группе резервирования B-Servers
, я могу сделать фильтр OR следующим образом:
{
"bool": {
"should": [
{
"query": {
"match": {
"host": {
"query": "SERVER06",
"type": "phrase"
}
}
}
},
{
"query": {
"match": {
"host": {
"query": "SERVER07",
"type": "phrase"
}
}
}
},
{
"query": {
"match": {
"host": {
"query": "SERVER08",
"type": "phrase"
}
}
}
}
]
}
}
и сохраните его как поисковый запрос B-Servers
. Теперь я получаю отфильтрованный список, в котором я могу выбрать сервер с дополнительным и более строгим фильтром. Раньше у меня были все серверы и quick count
перечислял только пять главных записей, поэтому мне приходилось выбирать один, а затем редактировать фильтр вручную, если моей цели не было в списке.
Это должно быть полезно и для других полей строкового типа. Думаю, документация должна была включать еще пару примеров, чтобы установить контекст для размещения оператора bool, а не просто демонстрацию принципа.
Эта ссылка также была полезно для демонстрации того, как выполнять логические операции из поля поиска, а не в качестве фильтра.
[EDIT] Обновление для Kibana 5.2, так как мне не удалось заставить работать предыдущий синтаксис. Следующее помогло с 5.2, я использовал эту ссылку, чтобы разобраться:
{
"query": {
"bool": {
"should": [
{
"match": {
"host": "SERVER06"
}
},
{
"match": {
"host": "SERVER07"
}
},
{
"match": {
"host": "SERVER08"
}
}
],
"minimum_should_match": 1
}
}
}
person
ErikE
schedule
16.02.2016