博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
logstash同步父子文档
阅读量:7175 次
发布时间:2019-06-29

本文共 3167 字,大约阅读时间需要 10 分钟。

父子文档,可以理解为关系型数据库中的一对多的关系。使用logstash同步MySQL数据,有时候需要同步父子文档。

使用ES父子文档功能需要满足两个条件

  • 指定一个type是另一个type的父
  • 在存储子文档的时候,通过parent参数指定父文档的Id

第一步:定义父子关系

curl -XPUT "http://localhost:9200/product?pretty" -d '

{  "mappings": {     "service_judge" : { },     "service_judge_detail":{       "_parent": {         "type": "service_judge"}}}复制代码

第二步:配置文件

input{     jdbc {         jdbc_driver_library => "/some/config-dir/mysql-connector-java-5.1.46-bin.jar"         jdbc_driver_class => "com.mysql.jdbc.Driver"         jdbc_connection_string => "jdbc:mysql://localhost:3306/product"         jdbc_user => "user"         jdbc_password => "123456"         jdbc_paging_enabled => "true"         jdbc_page_size => "1000"         jdbc_default_timezone =>"Asia/Shanghai"         schedule => "* * * * *"         statement => "SELECT * FROM  service_judge WHERE `status` = 1"         type => "service_judge"       }       jdbc {         jdbc_driver_library => "/some/config-dir/mysql-connector-java-5.1.46-bin.jar"         jdbc_driver_class => "com.mysql.jdbc.Driver"         jdbc_connection_string => "jdbc:mysql://localhost:3306/product"         jdbc_user => "user"         jdbc_password => "123456"         jdbc_paging_enabled => "true"         jdbc_page_size => "1000"         jdbc_default_timezone =>"Asia/Shanghai"         schedule => "* * * * *"         statement => "SELECT * FROM  service_judge_detail WHERE `status` = 1"         type => "service_judge_detail"       } } filter {    json {        source => "message"        remove_field => ["message"]    }}output{      stdout {        codec => json_lines      }      if[type] == "service_judge"{      elasticsearch {         hosts => "localhost:9200"         user => "elastic"         password => "123456"         index => "service_judge"         document_type => "service_judge"         document_id => "%{id}"      }      }      if[type] == "service_judge_detail"{      elasticsearch {         hosts => "localhost:9200"         user => "elastic"         password => "123456"         index => "service_judge"         document_type => "service_judge_detail"         document_id => "%{id}"         # 这里通过parent指定父文档:参数为子表中存的父表的id         parent => "%{service_judge_id}"      }      } } 复制代码

查询验证

查询:评价标签带有非常差的评价

GET product/service_judge/_search{  "query": {    "has_child": {      "type": "service_judge_detail",      "query": {        "match": {          "content": "非常差"        }      }    }  }}复制代码

结果:

{  "took": 9,  "timed_out": false,  "_shards": {    "total": 5,    "successful": 5,    "failed": 0  },  "hits": {    "total": 1,    "max_score": 1,    "hits": [      {        "_index": "service_judge",        "_type": "service_judge",        "_id": "2c94bf8362ffe67d016300f3b2ca0001",        "_score": 1,        "_source": {          "@timestamp": "2018-05-07T10:40:00.076Z",          "service_id": "4028b8815ca0a5ca015ca0a67ad90000",          "name": "衣柜送货管家评价",          "@version": "1",          "memo": "评价33444",          "addname": "1",          "id": "2c94bf8362ffe67d016300f3b2ca0001",          "target_role": "003",          "type": "service_judge",          "value": null,          "status": "1"        }      }    ]  }}复制代码

转载地址:http://ompzm.baihongyu.com/

你可能感兴趣的文章
技术宅男既要提升编程技术也要加强沟通能力
查看>>
开源计划--格瓦拉梦想(GUEVARA‘S DREAM)
查看>>
show full columns 和 checking privileges的说明
查看>>
电信网络拓扑图自动布局之总线
查看>>
数据库启动时报ORA-00845错误解决方法
查看>>
查询阿里云存储文件并导出excle 保存到本地
查看>>
WebService-—调用第三方提供的webService服务
查看>>
LVM报错:resize2fs: Bad magic number in super-block
查看>>
从开发到部署会用到的 Docker 命令
查看>>
access数据库转mysql数据库
查看>>
CISCO服务器配置RAID步骤
查看>>
利用makefile文件编译c++源文件
查看>>
VS 0xC0000005 运行错误分析
查看>>
ASP.NET中TextBox控件设置ReadOnly="true"后台取不到值
查看>>
找出Java进程ID pid的N种方法
查看>>
SSH和SFTP简介
查看>>
借助JRebel使Tomcat支持热部署
查看>>
基于Mozilla Thunderbird的扩展开发(八)---进程间通信之Socket篇(续)
查看>>
让eclipse像idea一样炫起来
查看>>
函数上下文 this 判断技巧。
查看>>