Запрос Lucene на Kibana Откройте для себя не работает, как задумано? - PullRequest
1 голос
/ 21 марта 2019

Я пытаюсь найти имена серверов по атрибуту "host" моего индекса logstash.

Я ищу на вкладке "Обнаружение" в Кибане.

Когда я записываю sl00pm в строке поиска, я получаю:

Результаты не найдены

Но когда я добавляю звездочку (*) и ищу sl00pm *, я получаю это:

хост: sl00pm.soo85 .poly-vale.intra дата: 2019-03-20 15: 23: 10 591

Я не понимаю, почему.

Но когда я делаю ту же манипуляцию для другого имени сервера slzq85 , я получаю это:

хост: slzq85 .soo85.poly-vale.intra дата: 21 / март / 2019: 09: 24: 56 + 0100

И это то, что я ожидаю.

Вот определение моего индекса в LogStash:

{
 "logstash-2019.03.20": {
  "aliases": {},
  "mappings": {
   "apache-access": {
    "_all": {
     "enabled": true,
     "norms": false
    },
    "dynamic_templates": [
     {
      "message_field": {
       "match": "message",
       "match_mapping_type": "string",
       "mapping": {
        "index": "analyzed",
        "omit_norms": true,
        "type": "string"
       }
      }
     },
     {
      "string_fields": {
       "match": "*",
       "match_mapping_type": "string",
       "mapping": {
        "fields": {
         "raw": {
          "ignore_above": 256,
          "index": "not_analyzed",
          "type": "string"
         }
        },
        "index": "analyzed",
        "omit_norms": true,
        "type": "string"
       }
      }
     }
    ],
    "properties": {
     "@timestamp": {
      "type": "date"
     },
     "@version": {
      "type": "keyword"
     },
     "date": {
      "type": "text",
      "norms": false,
      "fields": {
       "raw": {
        "type": "keyword",
        "ignore_above": 256
       }
      }
     },
     "host": {
      "type": "text",
      "norms": false,
      "fields": {
       "raw": {
        "type": "keyword",
        "ignore_above": 256
       }
      }
     }
    }
   },
  },
  "settings": {
   "index": {
    "refresh_interval": "5s",
    "number_of_shards": "5",
    "provided_name": "logstash-2019.03.20",
    "creation_date": "1553036402235",
    "number_of_replicas": "1",
    "uuid": "mCSFLYGETPm6qbgOwShHog",
    "version": {
     "created": "5060399"
    }
   }
  }
 }
}

И версия:

version": {
 "number": "5.6.3",
 "lucene_version": "6.6.1"
},

Не могли бы вы сказать мне, почему мои результаты не так хороши?

Я хочу добавить, что я использую типы отображения и имею один и тот же атрибут в различных типах отображения моего индекса, но с тем же определением, что и выше

привет

1 Ответ

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

Причина такого поведения заключается в том, что анализатор разбивает слова. Стандартный анализатор разбивает слова по правилам, изложенным в UAX # 29 . В частности, здесь следует обратить внимание на правила WB6 и WB11.

По сути, оно не будет разбиваться на буквы с '.' в середине (например, "ab.cd") или на числах с '.' в середине (например: «12.34»), но он будет разбит на цифры и буквы, разделенные знаком «.» (например: "12.cd").

Таким образом, в вашем индексе «sl00pm.soo85» индексируется как один токен, а «slzq85.soo85» разделен на два токена: «slz85» и «soo85».

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

...