elasticsearch,Curl,Indexing,elasticsearch" /> elasticsearch,Curl,Indexing,elasticsearch" />

在不使用curl的情况下将数据索引到ElasticSearch

在不使用curl的情况下将数据索引到ElasticSearch,curl,indexing,elasticsearch,Curl,Indexing,elasticsearch,我对ElasticSearch以及网络(TCP/IP、HTTP/HTTPS)非常陌生。 我使用Kibana3接口运行ElasticSearch,我能够很好地索引数据(使用curl)。下一步我要做的是从一个微控制器上传数据——确切地说,是带有WiFi屏蔽的Arduino。如何准确地将数据索引到ElasticSearch?WiFi模块具有HTTP和TCP/IP功能,但我不确定如何实现这一点 我将非常感谢任何能帮助我的方向和资源 谢谢如果您有可用的HTTP,那么您所要做的就是将要索引的数据放入索引中。

我对ElasticSearch以及网络(TCP/IP、HTTP/HTTPS)非常陌生。 我使用Kibana3接口运行ElasticSearch,我能够很好地索引数据(使用curl)。下一步我要做的是从一个微控制器上传数据——确切地说,是带有WiFi屏蔽的Arduino。如何准确地将数据索引到ElasticSearch?WiFi模块具有HTTP和TCP/IP功能,但我不确定如何实现这一点

我将非常感谢任何能帮助我的方向和资源


谢谢

如果您有可用的HTTP,那么您所要做的就是将要索引的数据放入索引中。使用HTTP模块:

PUT http://logstash_server/your_index/:id
其中
:id
是要插入的记录的id,请求的主体将是要索引的文档,如JSON

P说,如果你最终想把数据输入到KiBina,那么就考虑使用类似的东西。它有广泛的可用输入,可以输出到多个目标,包括通过Kibana进行消费的Elasticsearch。它还提供UDP接口,这通常更适合于日志记录

在您的例子中,您只需设置一个带有Elasticsearch输出的TCP侦听器:

input {
  tcp {
    host => "0.0.0.0"
    port => 5228
    codec => json_lines
  }
}

output {
  elasticsearch {
    host => "localhost"
  }
}
然后,您只需在端口5228上打开一个到logstash服务器的TCP连接,并发送一行JSON,其中包括一个带有当前时间的
@timestamp
字段,一个值为1的
@version
字段,然后是要索引的任何其他字段。您可以保持该套接字处于打开状态并发送多行,每行都将导致一条新记录被索引;您只需确保每一行都是换行终止的


如果您想使用不同的输入格式,那么您可以查看以选择您更喜欢的输入格式。

只是想确认我是否要使用HTTP,我只需要使用PUT而不是XPUT,对吗?例如,PUT-d'{“Name”:“John”,“Age”:21}'我想把数据放到Kibana中进行可视化,但是有必要使用Logstash吗?如果没有,您能给我一个如何发送JSON正确格式的示例吗?正确,当您看到
curl-XPUT
时,“使用此方法”开关是
-X
,方法是
PUT
。我没有使用过没有Logstash的Kibana,所以我不确定我能不能说它的格式应该是什么。接下来的问题是,我能用POST方法代替PUT吗?它们在Elasticsearch中有不同的语义;PUT用于更新已知文档,POST用于创建新文档。我相信,参见ISO8601。ie,
2015-03-02T19:53:15.675Z