Logstash/Elasticsearch JDBC document_id vs document_type?
Posted
技术标签:
【中文标题】Logstash/Elasticsearch JDBC document_id vs document_type?【英文标题】:Logstash/Elasticsearch JDBC document_id vs document_type? 【发布时间】:2017-03-28 18:24:10 【问题描述】:所以当我使用来自 logstash 的 JDBC 导入器并导出到 elasticsearch 时,我试图围绕 document_type 与 document_id 进行比较。
我终于把头绕在索引上了。但是让我们假装我从一个传感器数据表(如温度/湿度/等...)中提取,其中包含传感器 ID 的...温度/湿度(与天气相关的数据)并记录了时间。 (所以这是一张大桌子)
而且我想经常每隔 X 轮询一次数据库。
在这种情况下,document_type 和 document_id 会是什么,这将针对 1 个索引存储(或任何您想调用的名称)。
document_type vs document_id 让我很困惑,尤其是在 JDBC 导入器方面。
如果我将 document_id 设置为我的主键,它不会每次都被覆盖吗?所以我每次只有一份数据文件? (这似乎毫无意义)
【问题讨论】:
【参考方案1】:jdbc plugin 将创建一个 JSON 文档,其中每一列都有一个字段。因此,为了与您的示例保持一致,如果您有该数据,它将被导入为如下所示的文档:
"sensor_id": 567,
"temp": 90,
"humidity": 6,
"timestamp": "time",
"@timestamp": "time" // auto-created field, the time Logstash received the document
您说的对,如果您将document_id
设置为主键,它将被覆盖。你可以忽略document_id
,除非你想更新 Elasticsearch 中的现有文档,我不认为你会想要使用这种类型的数据。让 Elasticsearch 为您生成文档 id。
现在让我们谈谈document_type
。如果要设置文档类型,则需要将 Logstash 中的 type
字段设置为某个值(将传播到 Elasticsearch 中)。所以 Elasticsearch 中的type field 用于对相似的文档进行分组。如果您使用 jdbc 插件导入的表中的所有文档都属于同一类型(它们应该是!),您可以像这样在 jdbc 输入中设置 type
...
input
jdbc
jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "mysql"
parameters => "favorite_artist" => "Beethoven"
schedule => "* * * * *"
statement => "SELECT * from songs where artist = :favorite_artist"
...
type => "weather"
现在,在 Elasticsearch 中,您可以通过为该类型设置 mapping 来利用 type
字段。例如,您可能想要:
PUT my_index
"mappings":
"weather":
"_all": "enabled": false ,
"properties":
"sensor_id": "type": "integer" ,
"temp": "type": "integer" ,
"humidity": "type": "integer" ,
"timestamp": "type": "date"
希望这会有所帮助! :)
【讨论】:
哇,谢谢,这可能是我见过的对这两个最好的解释! 对不起,这可能是一个迟到的问题:但是我“需要”设置映射吗?我想我不确定他们的确切需求?如果我不需要设置映射,那么真的需要类型吗?以上是关于Logstash/Elasticsearch JDBC document_id vs document_type?的主要内容,如果未能解决你的问题,请参考以下文章
Logstash+elasticsearch+elastic+nignx
企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建
Filebeat+Kafka+Logstash+ElasticSearch+Kibana 日志采集方案
filebeat + logstash + elasticsearch + granfa