2 фильтра dsl-запросов выглядят одинаково и как их комбинировать - PullRequest
0 голосов
/ 04 июня 2019

В Кибане я создал 2 фильтра: raw.browserJs.isWebDriver - это true, а raw.browserJs.isWebDriver - нет.почему DSL запроса на редактирование одинаков для обоих:

{
  "query": {
    "match": {
      "raw.browserJs.isWebDriver": {
        "query": true,
        "type": "phrase"
      }
    }
  }
}

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

{
  "query": {
    "match": {
      "appName": {
        "query": "temp",
        "type": "phrase"
      }
    }
  }
}

1 Ответ

0 голосов
/ 04 июня 2019

Запрос DSL, отображаемый в Kibana, не является фактическим запросом, который отправляется наasticsearch. Добавлен фильтр диапазона для выбранного периода, и фильтры инвертированы. Вы можете увидеть фактический запрос в базовом запросе, который отправляется в вашем браузере.

Если вы отфильтруете, где raw.browserJs.isWebDriver не соответствует действительности, то получите что-то вроде:

{
  "query": {
    "bool": {
      "must_not": [
        {
          "match_phrase": {
            "raw.browserJs.isWebDriver": true
          }
        }
      ]
    }
  }
}

Вы можете объединить несколько условий в одном DSL-запросе с запросом bool. (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html)

В вашем примере будет работать следующий запрос:

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "raw.browserJs.isWebDriver": true
          }
        },
        {
          "match_phrase": {
            "appName": "temp"
          }
        }
      ]
    }
  }
}
...