Ответ 1
Я не уверен, является ли это ответом на ваш реальный вопрос, я напишу его в любом случае, поскольку кто-то может принести пользу, и я нашел примеры синтаксиса фильтра Kibana неуловимыми при поиске в googling.
Я пытаюсь определить булевский фильтр вместо логического запроса на вкладке Discover, чтобы разгладить поле поиска и fascilitate дальнейшей фильтрации с ограниченным набором значений.
Я нашел эту ссылку в документации, где описывается синтаксис AND, OR, NOT filter. После немного экспериментирования это помогло мне, например:
У меня есть поле с именем host
, содержащее имя сервера, отправляющего запись в журнале. Существует довольно много серверов, каждый из которых принадлежит к одной из нескольких групп избыточности. Чтобы фильтровать только записи журнала, созданные серверами "SERVER06
ИЛИ SERVER07
ИЛИ SERVER08
", которые относятся к отдельной группе избыточности B-Servers
, я могу сделать фильтр ИЛИ следующим образом:
{
"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
}
}
}