![](/img/trans.png)
[英]Filebeat > is it possible to send data to Elasticsearch by means of Filebeat without Logstash
[英]Data pipeline design considerations (Filebeat, Kafka, Logstash, Elasticsearch)
我正在嘗試清除以下數據管道中的一些問題,並希望對此設計中的任何漏洞(利用Filebeat,Kafka,Logstash和Elasticsearch)獲得一些意見。
查找給定用戶的最新位置,最長延遲時間為45秒。
我們有一個Python應用程序,可以連續注銷用戶的最新位置。
# log.json
{"user_id": 1, "location": "San Francisco, CA"}
{"user_id": 1, "location": "New York City, NY"}
{"user_id": 2, "location": "Chicago, IL"}
{"user_id": 1, "location": "Portland, OR"}
這個想法是將這些數據寫入Elasticsearch(我們公司內部對它有很好的支持的數據存儲),並使用“ user_id”作為文檔ID,這樣,如果我執行這2次插入,便會背靠背:
{"user_id": 1, "location": "San Francisco, CA"}
{"user_id": 1, "location": "New York City, NY"}
然后在Elasticsearch中查詢“ user_id” == 1將返回最新位置。
Filebeat -> Kafka -> Consumer (business logic)-> Kafka -> Logstash -> Elasticsearch
。
{"user_id": 1, "document_version": 1, "location": "San Francisco, CA"}
{"user_id": 1, "document_version": 2, "location": "New York City, NY"}
寫入發生亂序是否會發生任何情況?
假設您控制着日志代碼-您可以看看讓應用程序直接登錄到Kafka,然后使用KSQL或Kafka Streams,可以在45秒的時間內找到數據,將數據寫回到另一個Kafka主題,最后使用Kafka Connect的Elasticsearch輸出連接器(或Logstash)以寫入Elasticsearch。 我不知道Filebeat Kafka輸出的靈活性如何,但是我認為您需要一個“原始”主題,然后訂閱該主題,將其“重新分區”為另一個主題,然后進行后續的輸出處理。
您可以通過識別密鑰使Kafka分區的事件井然有序。 例如,按用戶ID鍵,然后任何給定用戶的所有事件最終在Kafka中排序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.