У меня есть доступ к данным экземпляра elasticsearch с помощью Kibana.
В данных есть текстовое поле, которое содержит строку.
Эта строка (текстовое поле) выглядит как JSON но это не так.
Вот и разница (ПОЖАЛУЙСТА, ОБРАТИТЕСЬ НА клавишу «сообщение» в JSON):
Если вы развернете документ, чтобы увидеть «развернутый документ» с маленьким значком «открытая папка», вы можете выбрать две вкладки «Таблица» и «JSON».
Выберите «JSON ".
Тогда вы увидите следующее:
{
"_index": "kibana_sample_data",
"_type": "_doc",
"_id":"someString",
"_version": 1,
"_score": null,
"_source":{
"first_key":"some string",
"message":
"{
\"length\": 11.99,
\"percentage\": 0,
\"name\": \"foo\",
\"category\": \"bar\",
\"sub_msg\": \"M001: This is a message-code.\"
}"
}
}
Как видите, значение ключа сообщения, которое должно быть JSON, является просто строкой, и все ключи и информация о значениях экранирована (кроме числовых значений).
Чтобы легко выбрать его с помощью фильтра GUI, я должен увидеть JSON, например:
{
"_index": "kibana_sample_data",
"_type": "_doc",
"_id":"someString",
"_version": 1,
"_score": null,
"_source":{
"first_key":"some string",
"message":
{
"length": 11.99,
"percentage": 0,
"name": "foo",
"category": "bar",
"sub_msg": "M001: This is a message-code"
}
}
}
Сейчас я пытаюсь извлечь значение ключа "sub_msg" , используя Query DSL и регулярное выражение. Но я даже не могу найти все совпадения с правильным начальным символом значения ключа сообщения (строки).
Более подробно часть DSL Elasti c Search Query:
{
"query": {
"regexp": {
"message": "{.*"
}
}
}
Но поиск ничего не соответствует.
Что действительно совпадает, так это если я попытаюсь найти ключи в сообщении следующим образом:
{
"query": {
"regexp": {
"message": "sub_msg"
}
}
}
Что я могу not do - это поиск соответствующего значения в сообщении, например:
{
"query": {
"regexp": {
"message": "M001: This is a message-code"
}
}
}
Моя настоящая цель - запросить код сообщения журнала, например "M001:. *" в пределах значения клавиши "sub_msg" . С этими результатами запроса я хотел бы создать простую панель управления.
К сожалению, я чувствую, что сейчас нахожусь в тупике.
Я также пробовал такие вещи, как экранирование escape-символов значения добавив несколько символов "\" к фактическим обратным косым чертам в Query DSL. Это вызывает исключение в Кибане.