Elasticsearch соответствует нескольким IP-подсетям DSL Query - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь сделать фильтр запросов DSL в Kibana для определенного URI, при этом сопоставляя несколько IP-подсетей. До сих пор мне удавалось заставить его работать только с одной IP-подсетью:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "uripath": "/specific-uri-path"
          }
        },
        {
          "match": {
            "clientip": "10.0.0.0/8"
          }
        }
      ]
    }
  }
}

Но если я попытаюсь сопоставить несколько подсетей, произойдет сбой (вероятно, потому что совпадение может содержать только разные поля):

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "uripath": "/specific-uri-path"
          }
        },
        {
          "match": {
            "clientip": "10.0.0.0/8",
          "match": {
            "clientip": "14.0.0.0/8"
          }
        }
      ]
    }
  }
}

1 Ответ

0 голосов
/ 17 октября 2019

Мне удалось заставить его работать с запросом терминов. Это означает, что я также могу использовать массив значений для "clientip", поэтому в целом он чище. Я надеюсь, что это поможет кому-то еще.

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
        "uripath.keyword": "/specific-uri-path"
      }
    },
    {
      "terms": {
        "clientip": [
          "10.0.0.0/8",
          "14.0.0.0/8",
          "20.0.0.0/8"
        ]
      }
    }
   ]
  }
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...