Logstash-将嵌套的JSON导入Elasticsearch

我有大量(〜40000)嵌套的​​JSON对象,我想将它们插入elasticsearch中。

JSON对象的结构如下:

    {

"customerid": "10932"

"date": "16.08.2006",

"bez": "xyz",

"birthdate": "21.05.1990",

"clientid": "2",

"address": [

{

"addressid": "1",

"tile": "Mr",

"street": "main str",

"valid_to": "21.05.1990",

"valid_from": "21.05.1990",

},

{

"addressid": "2",

"title": "Mr",

"street": "melrose place",

"valid_to": "21.05.1990",

"valid_from": "21.05.1990",

}

]

}

因此,JSON字段(此示例中为地址)可以具有JSON对象数组。

Logstash配置看起来像什么将这样的JSON文件/对象导入elasticsearch?该索引的elasticsearch映射应该看起来像JSON的结构。elasticsearch文档ID应设置为customerid

input {

stdin {

id => "JSON_TEST"

}

}

filter {

json{

source => "customerid"

....

....

}

}

output {

stdout{}

elasticsearch {

hosts => "https://localhost:9200/"

index => "customers"

document_id => "%{customerid}"

}

}

回答:

如果您可以控制生成的内容,那么最简单的方法是将输入格式设置为单行json,然后使用json_lines编解码器。

只需将您更改stdin为:

stdin { codec => "json_lines" }

然后就可以了:

cat input_file.json | logstash -f json_input.conf

其中input_file.json具有以下行:

{"customerid":1,"nested": {"json":"here"}}

{"customerid":2,"nested": {"json":"there"}}

然后您将不需要json过滤器。

以上是 Logstash-将嵌套的JSON导入Elasticsearch 的全部内容, 来源链接: utcz.com/qa/429338.html

回到顶部