Kibana 6 объединяет 2 фильтра - PullRequest
0 голосов
/ 07 марта 2019

У меня есть 2 фильтра, которые хорошо работают: 1. Соответствует фразе "NA"

{
  "query": {
    "match": {
      "region.keyword": {
        "query": "NA",
        "type": "phrase"
      }
    }
  }
}

2.Использует поле со сценарием, которое извлекает фильтры, чтобы показать все часы, не находящиеся между 0-7:

{
  "script": {
    "script": {
      "inline": "boolean gte(Supplier s, def v) {return s.get() >= v} boolean lt(Supplier s, def v) {return s.get() < v}gte(() -> { doc['@timestamp'].date.hourOfDay }, params.gte) && lt(() -> { doc['@timestamp'].date.hourOfDay }, params.lt)",
      "params": {
        "gte": 0,
        "lt": 7,
        "value": ">=0 <7"
      },
      "lang": "painless"
    }
  }
}

Я бы хотел сгруппировать это в один фильтр, чтобы его «часы NA не были между 0-7», таким образом я мог изменить регион и время и при этом применить дополнительные фильтры.

Также не уверен, как добавить этот своего рода специальный фильтр, так как добавление фильтра позволяет мне ввести только 1 поле

1 Ответ

1 голос
/ 08 марта 2019

Прежде чем использовать визуализаторы и обнаружить, убедитесь, что вы создали индексный шаблон в Management -> Index Pattern -> Create index pattern `и добавили имя индекса, к которому вы будете применять фильтры.

Теперь, объединяя запросы, которые вы добавили в вопрос, комбинированный запрос будет выглядеть примерно так:

{
  "query": {
    "bool": {
      "must": [
        {
          "region.keyword": {
            "query": "NA",
            "type": "phrase"
          }
        },
        {
          "script": {
            "script": {
              "inline": "boolean gte(Supplier s, def v) {return s.get() >= v} boolean lt(Supplier s, def v) {return s.get() < v}gte(() -> { doc['@timestamp'].date.hourOfDay }, params.gte) && lt(() -> { doc['@timestamp'].date.hourOfDay }, params.lt)",
              "params": {
                "gte": 0,
                "lt": 7,
                "value": ">=0 <7"
              },
              "lang": "painless"
            }
          }
        }
      ]
    }
  }
}

Откройте раздел

В Откройте для себя раздел Kibana, выберите имя индекса в index pattern section (см. Ссылку на изображение) и затем нажмите Add a filter, там справа сбоку вы увидите вариант Edit Query DSL.

Скопируйте и вставьте вышеуказанный запрос. Вы сможете увидеть результаты в Document Table, то есть в деталях документа под графиком.

Visualizer

Ну, вы не упомянули в вопросе, относится ли это к определенному визуализатору (или вкладке обнаружения), однако, точно так же, как мы добавили фильтр в раздел обнаружения, вы можете сделать это в визуализаторах (например, в Metric Visualizer, где вы увидите Edit Query DSL раздел под Add a filter)

Дайте мне знать, если это поможет!

...