gpt4 book ai didi

json - 如何使用Logstash或curl来填充ElasticSearch?

转载 作者:行者123 更新时间:2023-12-03 00:56:52 26 4
gpt4 key购买 nike

我正在尝试将所有json导入我的elasticsearch中。我为此目的尝试了curl命令,但没有用,因为它开始产生解析错误。
这是我尝试的:

curl -XPOST "http://localhost:9200/test" -d "@test.json"
curl -XPOST "http://localhost:9200/test/_bulk" -d "@test.json"
curl -XPOST "http://localhost:9200/test/_bulk" --data-binary "@test.json"
curl -s -XPOST "http://localhost:9200/test/_bulk" --data-binary "@test.json"

和许多其他尝试。但是我得到的是 Parsing error。因此,想知道向我的所有记录提供 flex 搜索的方法是什么?
另外,如果有人可以用logstash帮助我解决问题,那将是很大的帮助。请让我知道最好的建议。
这是JSON中的示例数据,可能用换行符分隔。 Sample Data
这是错误:
{
"error" : {
"root_cause" : [
{
"type" : "parse_exception",
"reason" : "Failed to derive xcontent"
}
],
"type" : "parse_exception",
"reason" : "Failed to derive xcontent"
},
"status" : 400
}

最佳答案

您需要像这样更改json:

{ "index" : { "_index" : "test", "_type" : "type" } }
{"data":...}
{ "index" : { "_index" : "test", "_type" : "type" } }
{"data":...}
{ "index" : { "_index" : "test", "_type" : "type" } }
{"data":...}

然后,您可以运行:
curl -s -H "Content-Type: application/x-ndjson" -XPOST localhost:9200/_bulk --data-binary "@test.json"

阅读有关 Bulk API的更多信息。

如果您希望使用Logstash做到这一点,可以将 stdin inputjson filter一起使用,然后再使用 elasticsearch output。类似于(未经测试)的内容:
input {
stdin { }
}

filter {
json {
source => "message"
}

mutate {
remove_field => [ "message" ]
}
}

output {
elasticsearch {
}
}

然后启动:
cat test.json | bin/logstash -f logstash.conf

我希望这有帮助。

关于json - 如何使用Logstash或curl来填充ElasticSearch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43153282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com