logstash同步postgresql数据库到ES,索引类型设置失效,全部变成了doc

狐妖小红娘 2018-08-13 11:19:10
用logstash-input-jdbc插件同步postgresql数据库表到elasticsearch中!设置索引类型失效,全部成了doc索引类型
下面的是我的jdbc.conf配置
input {
stdin {
}
jdbc {
# 数据库
jdbc_connection_string => "jdbc:postgresql://localhost:5432/story"
# 用户名密码
jdbc_user => "tzdr"
jdbc_password => "1225"
# 数据库驱动jar包的位置
jdbc_driver_library => "E:/logstash-6.3.1/bin/postgresql/postgresql-9.4.1212.jar"
# postgresql的Driver
jdbc_driver_class => "org.postgresql.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#statement_filepath => "E:/logstash-6.3.1/bin/postgresql/jdbc.sql"
statement => "select * from book"
schedule => "* * * * *"
#索引的类型
type => "book"
}

jdbc {
# 数据库
jdbc_connection_string => "jdbc:postgresql://localhost:5432/story"
# 用户名密码
jdbc_user => "tzdr"
jdbc_password => "1225"
# 数据库驱动jar包的位置
jdbc_driver_library => "E:/logstash-6.3.1/bin/postgresql/postgresql-9.4.1212.jar"
# postgresql的Driver
jdbc_driver_class => "org.postgresql.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#statement_filepath => "E:/logstash-6.3.1/bin/postgresql/jdbc.sql"
statement => "select * from want"
schedule => "* * * * *"
#索引的类型
type => "want"
}

}

filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
if [type]=="book"{
elasticsearch {
hosts => "127.0.0.1:9200"
# index名
index => "myself"
# 需要关联的数据库中有有一个id字段,对应索引的id号 前面记得要%号
document_id => "%{istrue}"
}
}
if [type]=="want"{
elasticsearch {
hosts => "127.0.0.1:9200"
# index名
index => "myself"
# 需要关联的数据库中有有一个id字段,对应索引的id号 前面记得要%号
document_id => "%{id}"
}
}

stdout {
codec => json_lines
}
}
**************************************
下面是head里面显示的最终结果


第一次来论坛发帖!求各位大神帮帮忙,刚入坑老大交代的任务,谢谢各位大佬了
...全文
567 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
王念111 2018-08-13
  • 打赏
  • 举报
回复
elasticsearch配置下指定 document_type 试试

elasticsearch {
hosts => ["192.168.50.33:9200","192.168.50.34:9200"]
manage_template => false
index => "accesslog-%{+xxxx.ww}"
document_type => "accesslog"
}
狐妖小红娘 2018-08-13
  • 打赏
  • 举报
回复
就是_type属性全部和我设置的不一样,都成了doc!求懂得大神指点
狐妖小红娘 2018-08-13
  • 打赏
  • 举报
回复
问题已经解决了!谢谢大家
原来从ES 6.0后开始慢慢的开始不再支持doc_type,不再和传统的数据库table那样从概念上去对应
可以让所有的文档_type都是doc类型,logstash同步的时候会添加一个type字段,查询的时候加条件就可以
也可以每个类型,直接对应不同的索引!不过感觉那样会比较累赘
狐妖小红娘 2018-08-13
  • 打赏
  • 举报
回复
引用 2 楼 wangsht 的回复:
elasticsearch配置下指定 document_type 试试

elasticsearch {
hosts => ["192.168.50.33:9200","192.168.50.34:9200"]
manage_template => false
index => "accesslog-%{+xxxx.ww}"
document_type => "accesslog"
}

同步成功了!但是只有一个索引的状态改变为我设置的了,第二个表的信息同步失败,好像是mapping 在第一个索引建立之后就不能改动了
错误信息是


抱歉这个用的不熟!开始回复到自己帖子里去了
狐妖小红娘 2018-08-13
  • 打赏
  • 举报
回复
同步成功了!但是只有一个索引的状态改变为我设置的了,第二个表的信息同步失败,好像是mapping 在第一个索引建立之后就不能改动了
错误信息是

2,760

社区成员

发帖
与我相关
我的任务
社区描述
搜索引擎的服务器通过网络搜索软件或网络登录等方式,将Internet上大量网站的页面信息收集到本地,经过加工处理建立信息数据库和索引数据库。
社区管理员
  • 搜索引擎技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧