Проблемы с регулярным выражением в Kibana - PullRequest
0 голосов
/ 24 января 2019

Мне трудно использовать шаблон регулярных выражений в Kibana / Elasticsearch версии 6.5.4. Поле, которое я ищу, имеет следующее отображение:

"field": {
          "type": "text",
          "analyzer": "custom_analyzer"
        },

Поиски регулярных выражений в этом поле возвращают несколько попаданий, когда их запрашивают прямо вasticsearch:

GET /my_index/_search
{
    "query": {
        "regexp":{
            "field": "abc[0-9]{4}"
        }
    }
}

С другой стороны, на страницах поиска / панели инструментов Kibana все запросы ниже возвращаются пустыми:

исходный запрос - field:/abc[0-9]{4}/

запрос scaped - field:/abc\[0\-9\]\{4\}/

отчаянный запрос - field:/.*/

Проверка запроса, сделанного kibana наasticsearch, выявляет следующий запрос:

  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "field:/abc[0-9]{4}/",
            "analyze_wildcard": true,
            "default_field": "*"
          }
        }

Я ожидал, что kibana поймет синтаксис двойной косой черты /my_query/ и сделает «запрос регулярного выражения» вместо «запроса». Я пробовал это с обоими языками запросов: "lucene", "kuery" и с дополнительными "экспериментальными функциями запроса", включенными / отключенными.

Копая дальше, я обнаружил эту старую проблему , в которой говорится, что упругость только запускает регулярное выражение в устаревшее поле _all . Если это все еще верно, я не уверен, как регулярное выражение работает в kibana /astic 6.X.

Чего мне не хватает? Любая помощь в разъяснении условий использования регулярных выражений в Kibana будет высоко ценится

Все остальные вопросы стека в этой теме либо старые, либо были связаны с синтаксическими проблемами и / или отсутствием понимания того, как анализатор работает с пробелами, и не оказали мне никакой помощи.

1 Ответ

0 голосов
/ 14 марта 2019

Так что у меня нет точного ответа о том, как заставить Lucene работать с поиском Regexp в Кибане.Но я нашел способ сделать это в Кибане.

Решение заключается в использовании фильтра с настраиваемым DSL

enter image description here

Вот пример того, что поместить в Query JSON -

{
    "regexp": {
        "req.url.keyword": "/question/[0-9]+/answer"
    }
}

Пример URL-адреса, который у меня есть в моих данных - /questions/432142/answer

Дополнительно к этому вы можете написать дополнительные фильтрыиспользуя поиск в Kibana (синтаксис Lucene)

Выполняет соответствующий поиск, без проблем с экранированием или чего-либо подобного.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...