elasticsearch 6.x 关于 join 类型的 一些问题记录(长期更新)

本文记录了在Elasticsearch 6.x 中使用JOIN类型处理数据时遇到的问题,包括使用Logstash全量更新MySQL数据到ES的配置,集群内部索引间数据复制,查询结果震荡的解决,INNER_HITS限制,父子文档查询,以及Elasticsearch-SQL的注意事项。详细探讨了JOIN类型在parent-child关系中的应用以及相关配置和优化技巧。
摘要由CSDN通过智能技术生成

背景:
随着es 版本的不断向前演进,在es 6.x 版本中,已经开始有意识地,主动的去弱化 type 这个概念。原因简单来说就是,es 底层存储时,相同 type的数据会存储在一起,但类比到数据库中的表,我们知道,不同数据库的同样名称的表的数据是不存储在一起的;所以type 对于 es 删除来说有害无利。为解决此问题,es 决定在 6.x 版本中 弱化之,在 7.x 版本中 会彻底删除 type。
join 类型 是 es 6.x 版本新产生的一个类型,其产生是为了弥补 type 被弱化,被删除的影响。因为 在 es 5.x 甚至以前,parent-child 数据在 es 中存储 关键就在于 建立 一个索引,不同的 type 去区分父子;当es 6.x 决定放弃 type 时,join 类型 应运而生,它为解决 parent-child 而来。
本文章主要记录一下 个人使用 join 类型处理问题时遇到的不会之处,欢迎大家帮忙更新!

一、使用 logstash 全量更新 mysql 数据 到 es 6.x 的配置文件编写(含parent、child)

参考:https://discuss.elastic.co/t/how-to-create-a-parent-using-the-new-join-type-with-logstash/119523/2

(1)创建含 join 类型数据的索引(使用mapping)

PUT logstash-index-name
{
  "mappings": {
    "doc": {
      "properties": {
        "join_field": { 
          "type": "join",
          "relations": {
            "customer": "actions"
          }
        }
      }
    }
  }
}

索引:logstash-index-name,type:doc,parent-child 关系:“customer”: “actions”
(2)父表对应的 logstash 配置增加如下部分:

mutate {
	add_field => { "join_field" => "customer" }			
}
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值