Нет класса разбора JSON в безболезненном, так что вы не можете выполнить это во время запроса. Вам следует проанализировать JSOn во время индексации, это ускорит ваши поисковые запросы.
- Ingest
Вы можете использовать JSON Precessor
{
"json" : {
"field" : "string_source",
"target_field" : "json_target"
}
}
Трубопровод
PUT _ingest/pipeline/my-pipeline
{
"description": "describe pipeline",
"processors": [
{
"json": {
"field": "string_source",
"target_field": "json_target"
}
}
]
}
Индексный документ с использованием конвейера загрузки
POST json_index/_doc?pipeline=my-pipeline
{
"string_source":"{\"price\":10}"
}
Документ
"hits" : [
{
"_index" : "json_index",
"_type" : "_doc",
"_id" : "m7t3gXEB1B5aJp__0oos",
"_score" : 1.0,
"_source" : {
"json_target" : {
"price" : 10
},
"string_source" : """{"price":10}"""
}
}
]
Если вы не хотите сохранять исходную строку в индексе, вы можете использовать
PUT _ingest/pipeline/my-pipeline
{
"description": "describe pipeline",
"processors": [
{
"json": {
"field": "string_source",
"target_field": "json_target"
},
"remove": {
"field": "string_source"
}
}
]
}
2. Logsta sh
Это фильтр разбора JSON. Он берет существующее поле, которое содержит JSON, и расширяет его до фактической структуры данных в событии Logsta sh.
filter {
json {
source => "message"
}
}