Невозможно получить данные, которые содержат определенные c символов в Кибане - PullRequest
1 голос
/ 02 мая 2020

Я пытаюсь использовать Kibana для получения данных комментария, которые включают некоторые специфические c символы, такие как и Они не являются общими символами.

Я пытаюсь использовать escape-символ \ для них KQL похож на comment:\? или comment:\\?, но он не работает, кто-нибудь может помочь?

1 Ответ

1 голос
/ 02 мая 2020

Когда вы создаете образец, сделайте c и позвольте ES автоматически сгенерировать сопоставление для вас,

POST comments/_doc
{
  "comment": "?"
}

выполнение

GET comments/_mapping

даст вам

"comment":{
  "type":"text",
  "fields":{
    "keyword":{
      "type":"keyword",
      "ignore_above":256
    }
  }
}

Теперь анализатор *1011* типа по умолчанию обычно standard.

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

GET comments/_analyze
{
  "text": "?",
  "analyzer": "standard"
}

результат -

{
  "tokens" : [ ]
}

, означающий, что мы не можем искать его содержимое, используя стандартное поле text, но нам нужно

  1. либо определите другой анализатор по умолчанию

  2. , либо определите этот анализатор в одном из комментариев fields

Начиная со второго подхода (поскольку рекомендуется хранить отдельно анализируемые поля по-разному),

PUT comments2
{
  "mappings": {
    "properties": {
      "comment": {
        "type": "text",
        "fields": {
          "whitespace_analyzed": {
            "type": "text",
            "analyzer": "whitespace"
          }
        }
      }
    }
  }
}

POST comments2/_doc
{
  "comment": "?"
}

После проверки

GET comments2/_analyze
{
  "text": "?",
  "analyzer": "whitespace"
}

мы можем сделать следующее в KQL

comment.whitespace_analyzed:"?"

Обратите внимание, что есть набор встроенных анализаторов на выбор, но вы можете создать свой собственный.

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