我正在构建一个简单的聊天应用程序来练习我与Kafka和Elasticsearch的能力。我正在使用Confluent的Kafka及其包含的Kafka Connect Elasticsearch Connector以及Elasticsearch的开源版本。我的应用和Kafka之间的通信使用Kafka-rest API和JSON。我按照说明here。
正如说明所述,我在开始其余过程之前运行Elasticsearch。到目前为止,我能够将应用程序中的消息发送到Kafka,然后再回来,没有任何问题。当我在发送消息后运行confluent load elasticsearch-sink
时,我得到指令所说的输出。如果我没有发送消息,我就不会得到那个输出,这似乎表明数据流至少在那里工作。但是,当我使用以下命令cURL时,文档状态应该从Elasticsearch获取我的数据......
curl -XGET 'http://localhost:9200/jsontest/_search?pretty'
...我得到以下输出......
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}
...其中不包含我的消息。数据应位于hits.hits
。
请注意我使用的是Elasticsearch 5.6.8版,因为Confluent文档声明版本6.x存在已知问题。另外,我的cURL命令与示例略有不同,因为我的主题是jsontest
,而不是test-elasticsearch-sink
。我一定会更改quickstart-elasticsearch.properties
文件中的主题,以使其正常工作。
如何将数据导入Elasticsearch?